Totul a început cu un mic joc din epoca întunecată numit „Mario”, chiar de pe vremea când eram un băiețel mic sărind pe rațe pentru a-mi salva prințesa până la a fi un prinț frumos și masculin care călătorește în Persia (Prințul Persiei) luptând împotriva întunericului pentru a-mi salva lumea în urmă, am fost un mare fan al jocurilor video și am crescut jucându-le. Dar se plictisesc uneori și mă simt mai puțin implicat în asta. Astăzi, consolele avansate de jocuri permit jocuri virtuale și ne ajută să simțim jocul mult mai bine decât o poate face o tastatură sau un mouse.
Fiind un entuziast Arduino, m-am săturat să joc faimosul joc numit „Angry Birds” folosind tastatura și mouse-ul și am decis să-mi construiesc propriul controler de joc folosind un senzor flexibil și un potențiometru. Când senzorul flexibil este tras, pasărea de pe catapultă va fi de asemenea trasă și puteți utiliza potențiometrul pentru a seta direcția în care ar trebui să fie lansat. Atunci când eliberați senzorul flex, pasărea va fi lansată. Mi-a plăcut foarte mult să o fac, așa că, dacă sunteți la punctul de a construi ceva foarte asemănător, atunci acest tutorial vă va fi de ajutor. Acest tutorial va fi de asemenea util în controlul cursorului mouse-ului folosind potențiometrul.
Cerințe software și hardware:
Software:
- IDE Arduino
- Se procesează IDE
- Angry Birds Joc pe computer
Hardware:
- Arduino (Orice versiune)
- Potențiometru
- Senzor flexibil
- Rezistor de 47K ohm
- Conectarea firelor
- Breadboard
Conceptul din spatele:
Placa Arduino citește valorile de la Potentiometer și Flex Senor și le transmite la laptop / PC prin portul USB COM prin funcția normală Serial.write () . Apoi citim aceste informații folosind Procesare și controlăm cursorul mouse-ului folosind clasa Robot în Java care este susținută prin procesarea IDE. Am programat IDE-ul de procesare în așa fel încât, atunci când senzorul Flex este tras, se va face un clic al mouse-ului și în funcție de cât de mult este tras, indicatorul mouse-ului se va deplasa în direcția X. Apoi, pe baza valorii din potențiometru, vom muta cursorul mouse-ului în direcția Y, astfel putem seta direcția în care ar trebui să fie lansată pasărea.
Diagrama circuitului:
Circuitul pentru redarea Angry Bird folosind senzorul flexibil și potențiometrul este ușor.
Am conectat simplu un potențiometru și un senzor flex la intrările analogice (A0, A1) ale Arduino. Ieșirea senzorului Flex este, de asemenea, trasă în jos folosind un rezistor de tragere de 47K.
Puteți să îl conectați direct pe panou sau să-l lipiți pe o placă Perf și să-l asamblați pe mănuși sau ceva pentru a-l face mai creativ. Am folosit pur și simplu un panou pentru a-mi face conexiunile, așa cum se arată mai jos:
Program Arduino:
Codul Arduino complet este dat la sfârșitul tutorialului. Puține linii importante sunt explicate mai jos.
Inițializăm programul pentru a funcționa cu o rată de 9600 baud și începem să citim valorile din senzorul Flex și din potențiometru. După cum știm funcția serial.write () poate trimite doar un octet de date la un moment dat. Deoarece un octet este de 8 biți și 2 ^ 8 = 256. Vom putea trimite valori de la 0 la 256. Deci, trebuie să comprimăm valorile ieșirii senzorului Flex și a ieșirii potențometrului în 0 la 256.
Pentru a face acest lucru, folosim funcția map () în Arduino. Toate valorile din senzorul flex sunt convertite de la 5 la 100, deci atunci când îndoim senzorul, acesta va crește de la 5 și când este eliberat, va reveni la 5. Pentru a menționa clicurile mouse-ului, se utilizează valoarea 1 și 0. Când este trimis 1, mouse-ul este apăsat și când 0 este trimis, mouse-ul este eliberat.
dacă (FlexValue> = 65 && FlexValue <= 120) // senzorul meu de flex variază de la 65 la 120, s-ar putea să fie diferit {FlexValue = hartă (FlexValue, 120,65,0,100); // pe baza îndoirii convertește la 0 la 100 dacă (FlexValue> = 5) // 1 și 0 sunt utilizate pentru clicul mouse-ului, deci începeți de la 5 {Mclick = true; Serial.write (1); // 1 este trimis pentru a face clic stânga mouse-ul Serial.write (FlexValue); // Valoarea flexibilă este distanța de deplasare a mouse-ului în direcția X} else {Mclick = false; Serial.write (0);}}
În mod similar, valorile din potențiometru sunt convertite de la 101 la 200 și cântă funcția map () și este trimisă la portul COM Laptops, care solicită funcția Serial.write () , așa cum se arată mai jos.
if (potValue <= 200) {potValue = hartă (potValue, 0,200,101,201); // Pe rând, convertiți la 101 la 201 Serial.write (potValue); // Valoarea potului este distanța de deplasare a mouse-ului în direcția Y}
Restul programului este explicat folosind comentariile.
Cod de procesare:
Procesarea este o aplicație de dezvoltare Open-Source și poate fi descărcată cu ușurință și utilizată pentru dezvoltarea de proiecte interesante folosind Arduino sau alte microcontrolere. Am făcut deja câteva proiecte folosind Procesare și le puteți verifica dând clic pe linkurile de mai jos.
- DIY FM Radio folosind procesarea
- Controlul realității virtuale / gesturilor folosind Arduino
- Cameră de chat privată folosind Arduino.
- Sistem de radar Arduino folosind APP de procesare și senzor cu ultrasunete
- Detectarea și urmărirea feței în timp real folosind Arduino
- Vitezometru DIY folosind Arduino și Procesare
- Joc de Ping Pong folosind accelerometrul Arduino
- Robot biped folosind Arduino
- Camera de imagini termice DIY Arduino
În acest proiect am folosit IDE de procesare pentru a citi valorile portului COM și pentru a controla indicatorul mouse-ului pe baza valorilor primite prin portul COM. Codul complet de procesare pentru acest controler de joc Angry Bird poate fi descărcat de pe linkul de mai jos:
- Cod de procesare pentru acest controler de joc Angry Bird (faceți clic dreapta și „Salvați linkul ca”)
Programul Arduino poate fi găsit la sfârșitul acestui tutorial. Codul de procesare a fost modificat pentru a se potrivi scopului nostru din codul dat de yoggy pe pagina sa GitHub.
Datele provenite de la portul COM trebuie citite în aceeași rată de transmisie în care au fost trimise de la Arduino. De asemenea, verificați ce port COM este conectat Arduino utilizând managerul de dispozitive. Arduino-ul meu a fost conectat la COM3 și era al 0- lea port din computerul meu, iar rata de transmisie în Arduino era de 9600, deci codul este după cum urmează
port = Serial nou (acesta, Serial.list (), 9600);
Odată ce începem să citim valorile, o distingem recunoscând-o pe baza valorii pe care am trimis-o de la Arduino. Valorile sunt mapate din nou de la 0 la 100, astfel încât vom putea controla mouse-ul pe baza valorii respective.
if (port.available ()> 0) {data = port.read (); println (date); // Citiți datele din portul COM și salvați-le în date} if (data> = 101 && data <= 201) // Dacă valoarea dacă este de la 101 la 201, atunci trebuie să fie de la Potentiometer {Turn = int (map (data (date) =, 101.201.0.100)); // Folosiți acea valoare pentru a transforma catapullt} if (date> = 5 && data <= 100) // Dacă valoarea este de la 5 la 100, atunci trebuie să fie din Flex Sensor {Pull = int (hartă (date, 5.100, 0,100));} // Folosiți acea valoare pentru a trage catapulta dacă (date == 1) faceți clic = adevărat; // Folosiți acea valoare pentru a apăsa butonul mouse-ului dacă (date == 0) faceți clic = fals; // Folosiți această valoare pentru a elibera butonul mouse-ului
Odată ce clasificăm datele, putem controla mouse-ul folosind Robot Java Class în procesare. Comanda robot.mouseMove (crntX-Pull, crntY + Turn); poate fi folosit pentru a muta mouse-ul în orice poziție dorită și liniile robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); și robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); poate fi folosit pentru a apăsa sau elibera butonul mouse-ului respectiv.
if (click == false) // când Flex Sesnor nu este tras {crntX = (int) p.getX (); crntY = (int) p.getY (); dacă (Trageți> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // Eliberați butonul mouse-ului} if (faceți clic pe == true) // când Flex Sesnor este tras {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Apăsați butonul mouse-ului robot.mouseMove (crntX-Pull, crntY + Turn); // Mutați mouse-ul pe baza valorii Flex și POT}}
IDE-ul de procesare la lansare va afișa, de asemenea, o mică casetă de dialog pe care puteți găsi valorile Pull, Turn și statusul mouse-ului, așa cum se arată mai jos
Acest detaliu poate fi folosit pentru a depana Programul sau pentru a corecta orice date necesare.
Lucru:
Pentru ca acest Angry Bird Project să funcționeze folosind codul furnizat, asamblați hardware-ul conform schemei de circuit și încărcați codul Arduino dat. Apoi, rețineți la ce port COM este conectat Arduino și efectuați modificările necesare în codul de procesare și lansați schița de procesare.
Acum, pur și simplu lansați jocul păsărilor furioase și plasați cursorul lângă catapultă și trageți senzorul flex pentru a trage pasărea și setați direcția folosind potențiometrul. Odată ce direcția este setată, eliberați senzorul Flex
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
Pasărea ta va fi aruncată direct în aer și BOOMM !! Pe porci. Lucrarea completă poate fi găsită în videoclipul prezentat mai jos.
Sper că ți-a plăcut proiectul și ai reușit să construiești ceva similar. Dacă aveți nelămuriri, puteți să mă contactați în secțiunea de comentarii sau să postați întrebarea pe forum pentru întrebări tehnice.
Acum, este timpul să ne prăbușim în acele căsuțe de porci și să ne recuperăm ouăle de păsări !!!!