Cum să controlați roboții cu un controler de joc și Arduino

Cum să controlați roboții cu un controler de joc și Arduino / DIY

Arduinos și plăcile compatibile similare sunt unul dintre cei care merg la dispozitivele pentru tinerii care lucrează în întreaga lume. Indiferent dacă sunteți un începător care începe doar cu Arduino sau cineva care le-a pus deja în folosință în viața ta, ele oferă o platformă pentru nenumărate proiecte minunate.

Astăzi vom explora o modalitate creativă de a controla un servo utilizând procesarea și un controler Xbox360. Dacă sunteți deja destul de savvy de dezvoltare a jocului, s-ar putea să fiți interesat de tutorialul Custom Game Controller, care folosește unitatea.

Acest tutorial va presupune puțină cunoaștere prealabilă, dacă aceasta este prima dvs. incursiune în Arduino, vă puteți găsi ghidul Arduino util aici. În mod similar, dacă aceasta este prima dată când utilizați Java, aceasta poate fi puțin confuză. În timp ce Procesarea utilizează o versiune simplificată a platformei, aceste concepte și sfaturi Java ar putea ajuta în continuare.

De ce ai nevoie

  • 1 x Arduino. Folosim astăzi un ONU.
  • 1 x servo hobby. Orice lucru care va funcționa cu pinii Arduino.
  • 1 x controler Xbox360 cu fir. Deși acest lucru va funcționa din punct de vedere tehnic cu aproape orice controler.
  • Mai multe cabluri de conectare.

Pe lângă aceste lucruri, va trebui de asemenea să descărcați Procesarea și ID-ul Arduino de pe site-urile lor respective.

Pregătirea lui Arduino

Mai întâi trebuie să atașăm servo-ul nostru. Culorile cablurilor pot varia aici, dar ca regulă generală roșu se leagă de 5v pin, și maro sau negru atașați la GND PIN-ul. Linia de date, care este de obicei galben sau portocale, se atașează pinul 10.

Verificați cablajul și conectați dispozitivul Arduino la computer. Deschideți ID-ul Arduino.

Deschideți schița StandardFirmata situată la Fișier> Exemple> Firmata> StandardFirmata. Această schiță creează placa pentru control extern pe portul serial și este aceeași cu cea pe care am folosit-o în articolul nostru despre controlul lui Arduino cu Python Cum de a programa și de a controla un Arduino cu Python Cum de a programa și de a controla un Arduino cu Python Din păcate, este imposibil să programați direct un program Arduino în Python, dar îl puteți controla prin USB folosind un program Python. Iată cum. Citeste mai mult . Încărcați schița în tablă.

Dacă încărcarea eșuează, verificați dacă ați selectat detaliile de pe placa și portul corect în Unelte meniul.

Arduino este gata să plece!

Configurarea procesării

Deschideți procesarea, veți fi întâmpinat cu o schiță necompletată. Înainte de a face ceva aici, va trebui să instalăm câteva biblioteci. Deplasați-vă la Schiță meniu și selectați Importați Biblioteca> Adăugați Biblioteca. Acest lucru va ridica Contribuție Manager care vor arăta familiare utilizatorilor Arduino acolo.

Trebuie să instalăm trei biblioteci pentru a face acest lucru. Primul este Controlul jocului Plus bibliotecă. Aceasta este ceea ce ne va permite să folosim controlerul nostru de joc cu procesarea. Utilizați fereastra de căutare pentru ao găsi și faceți clic pe instalare în colțul din dreapta jos. Game Control Plus are nevoie de o altă bibliotecă instalată pentru instrumentul său de configurare, așa că hai să o obținem acum. Căutați G4P biblioteca și să o instalați.

În cele din urmă, avem nevoie de Arduino (firmata) bibliotecă. Ați ghicit-o, căutați-o și faceți clic pe instalare. Cu aceste lucruri instalate suntem gata să continuăm cu testarea că totul va funcționa. Lucrăm astăzi cu Windows 10, dar procesarea este disponibilă pentru majoritatea platformelor, inclusiv Raspberry Pi. Imaginați-vă posibilitățile!

Testarea Arduino

Înainte de a ne arunca cu capul în crearea unei schițe personalizate, hai să testăm Arduino și Servo cu procesarea. Deschis Fișier> Exemple, și selectați ArduinoServo de la Bibliotecile contribuite / Arduino (firmata) pliant. Vom folosi acest lucru pentru a testa servo-ul nostru, dar mai întâi va trebui să schimbăm câteva lucruri.

Derulați în jos prin schiță și găsiți această linie:

println (Arduino.list ());

Dacă este comentată, eliminați cele două tăieturi înainte println (Arduino.list ());, și salvați schița. Rulați-l făcând clic pe pictograma de redare și țineți cont de consola din partea de jos. Aceasta va lista totul atașat la dvs. COM porturi.

În cazul meu, Arduino meu a fost pe COM 8, care a fost al treilea port enumerate aici. Acest lucru este important deoarece codul din linia de mai jos are un cod mulțime a căror valoare determină ce port COM să folosească.

Trebuie să schimbăm acest lucru pentru a reflecta portul nostru COM. Pentru mine, a fost a treia poziție sau numărul 2:

arduino = Arduino nou (acest Arduino.list () [2], 57600);

Trebuie să facem câteva alte mici modificări ale acestui cod pentru a le testa. Derulați în jos în cazul în care pinii Arduino sunt configurați și comentați unul dintre liniile de aici. Schimbă-l pe celălalt Pin 10.

//arduino.pinMode(4, Arduino.SERVO); arduino.pinMod (10, Arduino.SERVO);

Trebuie să facem același lucru în A desena() metodă:

arduino.servoWrite (10, constrângeți (mouseX / 2, 0, 180)); // arduino.servoWrite (4, constrângeți (180 - mouseX / 2, 0, 180)); 

Salvați schița și rulați-o. Ar trebui să vă puteți muta servo-ul mutându-vă mouse-ul înapoi și înapoi pe fereastra generată de program.

Dacă nu funcționează pentru dvs., verificați cablajul Servo și verificați dacă aveți poziția potrivită pentru portul COM. Odată ce știi că Arduino vorbeste frumos cu Procesarea, e timpul să mergem mai departe.

Configurarea controlerului

Biblioteca Game Control Plus pe care o folosim vine și cu o configurație puternică. Asigurați-vă că controlerul este conectat, deschideți Configurator exemplu de proiect, și rulați-o. Veți primi un meniu după cum urmează:

Faceți clic pe numele controlerului dvs. și va apărea o fereastră de configurare mult mai mare.

Acest lucru poate părea destul de descurajant, dar este proiectat să fie cât mai simplu posibil. În partea stângă, completați prima cheie cu numele dorit ca variabilă. Această variabilă va controla poziția servo-ului, așa că o voi numi servoPos.

În căsuța de lângă ea puteți da o scurtă descriere a ceea ce face. Acum ridicați controlerul și mutați stickul pe care doriți să-l utilizați cu servomotorul. O mică experiență arată că bara dreaptă corespunde cu caseta X de rotație. Trageți o linie între servoPos variabilă și această casetă.

Acum trebuie să salvăm configurația noastră ca fișier de date. În colțul din dreapta sus al ferestrei, completați Rolul dispozitivului câmp și Nume de fișier camp.

Numele fișierului este important, deoarece îl veți folosi în codul dvs. Îl păstrez simplu, sunând-o XBS. Clic Verifica atunci Salvați. Acesta scrie un fișier cu instrucțiuni pentru controlorul nostru pe care îl putem folosi ulterior.

Pregătirea dosarului Custom Sketch

Să ne pregătim dosarul de lucru. Deschideți o schiță de procesare goală și salvați-o sub orice nume vă place. Acest lucru va crea un director pentru acesta în locația de salvare.

Acum navigați la Documente / procesare / biblioteci / GameControlPlus / exemple / Configurator și copiați dosarul etichetat date. Acest dosar conține fișierul de configurație pe care tocmai l-am creat. Navigați la directorul schiței goale salvate recent și lipiți dosarul de date.

Crearea schiței personalizate

Acum totul este în vigoare și putem începe să facem o schiță folosind cele două biblioteci. Vom trece prin acest pas cu pas, dar puteți descărca dosarul complet de schițe și date dacă vreți să faceți saltul înainte. Rețineți că este posibil să fie necesar să modificați codul pentru a reflecta porturile dvs. Arduino COM.

Începeți prin a importa toate bibliotecile de care avem nevoie:

import de procesare.serial. *; import net.java.games.input. *; import org.gamecontrolplus. *; import org.gamecontrolplus.gui. *; import cc.arduino. *; import org.firmata. *;

Trebuie să ne declarăm și noi Dispozitiv de control, I / O, și Arduino, împreună cu a pluti pentru a ține valori de la thumbstick:

Cont Cont ControlDevice; Control ControlIO; Arduino arduino; plutiți degetul mare;

Al nostru înființat() metoda creează o fereastră mică, o instanță a controlerului și se potrivește cu dispozitivul nostru cu fișierul config. Aici este important să obțineți corect numele fișierului fișierului nostru de date de configurare:

void setup () dimensiune (360, 200); control = ControlIO.getInstance (aceasta); cont = control.getMatchedDevice ("xbs"); dacă (cont == null) println ("nu astăzi chump"); // scrie mai multe declarații de ieșire decât mine System.exit (-1);  // println (Arduino.list ()); arduino = Arduino nou (acest Arduino.list () [2], 57600); arduino.pinMod (10, Arduino.SERVO); 

De asemenea, verificăm dacă nu există un controlor aplicabil în acest stadiu și dacă nu aveți nevoie, renunțați la program. În timp ce fereastra a fost creată cu mărimea() nu este necesar, ne va da mai tarziu un feedback despre faptul daca primim valori utile de la controlorul nostru. De asemenea, inițializăm Arduino-ul nostru și acționăm aici, exact așa cum am făcut-o în timpul testelor.

Acum creăm o mică metodă pentru a apuca valoarea de intrare de la controlorul nostru și pentru a o mapa la valorile pe care servo-ul nostru le va putea folosi:

public void getUserInput () thumb = map (cont.getSlider ("servoPos"). getValue (), -1, 1, 0, 180); 

Această singură linie de cod utilizează fișierul nostru de date pentru a obține controlul numit servoPos, care este legat la degetul mare al controlerului și citește valorile din acesta. Apoi hartă valorile și stochează valoarea în lista noastră deget mare float variabilă.

Chiar acum acest cod nu este chemat, vom rezolva asta acum.

void draw () getUserInput (); fundal (degetul mare, 100255); arduino.servoWrite (10, (int)); 

a desena() este similar cu buclă() în IDE Arduino. Fiecare cadru, îl numește getUserInput () și actualizează deget mare valoare. Utilizează această valoare pentru a schimba valoarea roșie a fundal() oferindu-ne un indicator vizual al variației valorii. Apoi scrie această valoare către servo folosind arduino.servoWrite () funcţie. Rețineți că trebuie să aruncăm deget mare ca valoare întregă, deoarece funcția servoWrite ia două numere întregi (numărul pinului și unghiul) ca argumente.

Verificați codul pentru erori, salvați-l și executați clic pe Executare. După o mică întârziere de inițiere a Arduino, ar trebui să arate astfel:

Controlul cu controlorul jocului și Arduino: terminat!

Acest proiect a fost în multe feluri destul de în profunzime pentru codificatorul neexperimentat Aflați cu codificare Proiecte: 9 Cursuri Udemy pentru Programator Beginner Aflați cu Proiecte de codificare: 9 Cursuri Udemy pentru Programator Beginner Dificultate reala este gasirea de tutoriale bune de programare și cursuri care nu numai vă învață abilitățile necesare, dar faceți acest lucru cu proiecte practice. Aici intră Udemy. Citiți mai multe, în ciuda bibliotecilor fantastice disponibile pentru a ne ajuta. Ceea ce reprezintă este un nou mod de a vă gândi la controlul roboților și la orice alte dispozitive pe care le construiți.

Acest proiect ar merge perfect împreună cu ghidul nostru de construire a unui laser turret Pew Pew! Cum se construiește o turelă laser cu un arduino Pew Pew! Cum se construiește o turelă laser cu un arduino Sunteți plictisit? Ar putea construi și o turelă cu laser. Citește mai mult, oferindu-ți control total asupra ei. Ai putea să instalezi un buzzer Piezo ca în Simbolul nostru Arduino Alarmă Cum să faci un sistem simplu de alarmă arduino Cum să faci un sistem de alarmă simplă Arduino Detectează mișcarea, apoi speri de heck dintr-un intrus cu un sunete de alarmă ridicată și lumini intermitente. Suna distractiv? Bineînțeles. Acesta este scopul proiectului de astăzi Arduino, potrivit ... Read More tutorial și folosiți controlerul pentru a schimba pitch-ul soneriei sau culoarea luminilor.

Sau ai putea construi un robot masiv și să preiei pământul. Atâta timp cât ați avut un cablu USB suficient de lung!

Explorați mai multe despre: Arduino, Controler de joc, Robotică.