Kako upravljati robotima pomoću kontrolera igara i Arduino-a

  • Joseph Goodman
  • 0
  • 2770
  • 294
Oglas

Arduinos i slične kompatibilne ploče jedan su od uređaja za izradu kućnih majstora svugdje. Bez obzira jeste li početnik koji tek započinje s Arduinom ili netko tko ih je već koristio u vašem životu, oni pružaju platformu za bezbroj nevjerojatnih projekata.

Danas ćemo istražiti kreativan način kontrole servo uređaja pomoću Processinga i Xbox360 kontrolera. Ako ste već prilično pametni u razvoju igara, možda će vas zanimati naš vodič za prilagođeni kontroler igara koji koristi Unity.

Ovaj će tutorial pretpostaviti malo prethodno znanje, ako je ovo vaš prvi korak u Arduino fidding, ovdje će vam možda pronaći naš vodič za Arduino. Slično tome, ako vam se prvi puta koristi Java to može biti malo zbunjujuće. Dok Processing koristi pojednostavljenu verziju platforme, ovi Java koncepti i savjeti mogu još uvijek pomoći.

Što trebaš

  • 1 x Arduino. Danas koristimo UNO.
  • 1 x hobi servo. Sve što će raditi s Arduino igle.
  • 1 x ožičeni Xbox360 kontroler. Iako će to tehnički raditi s gotovo bilo kojim kontrolerom.
  • Nekoliko žica za spajanje.

Pored ovih stvari, trebat ćete preuzeti i Processing i Arduino IDE s njihovih web stranica.

Priprema Arduino

Prvo moramo priključiti svoj servo. Boje ožičenja ovdje mogu varirati, ali kao opće pravilo Crvena pridaje na 5v pin i smeđ ili crno pričvrstiti na GND pin. Podatkovna linija, koja je obično žuta boja ili narančasta, pridaje pin 10.

Provjerite ožičenje i spojite Arduino na računalo. Otvorite Arduino IDE.

Otvorite skicu StandardFirmata koja se nalazi na Datoteka> Primjeri> Firmata> StandardFirmata. Ova skica postavlja ploču za vanjsku kontrolu nad serijskim ulazom i ista je ona koju smo koristili u našem članku o kontroli Arduinoa s Pythonom Kako programirati i kontrolirati Arduino s Pythonom Kako programirati i kontrolirati Arduino s Pythonom Nažalost, to nemoguće je izravno programirati Arduino na Pythonu, ali možete ga upravljati preko USB-a pomoću Python programa. Evo kako. , Prenesite skicu na ploču.

Ako prijenos ne uspije, provjerite jeste li odabrali ispravne detalje ploče i vrata alat izbornik.

Naš Arduino je spreman za polazak!

Postavljanje obrade

Otvorite obradu, dočekat će vas prazna skica. Prije nego što nešto učinimo ovdje, morat ćemo instalirati nekoliko knjižnica. Kreni prema Skica izbornika i odaberite Uvezi biblioteku> Dodaj biblioteku. Ovo će dovesti do pojave Upravitelj doprinosa koji će izgledati poznato svim Arduinovim korisnicima vani.

Da bismo ovo učinili, moramo instalirati tri knjižnice. Prvo je glavno Game Control Plus knjižnica. To je ono što će nam omogućiti da koristimo naš kontroler za igre s Processingom. Upotrijebite prozor za pretraživanje da biste ga pronašli i kliknite instaliraj u donjem desnom kutu. Game Control Plus treba imati instaliranu drugu biblioteku za svoj alat za konfiguriranje, pa razmotrimo sada. Potražite G4P knjižnica i instalirati ga previše.

Napokon, trebamo Arduino (firmata) knjižnica. Pogodili ste ga, potražite ga i kliknite instaliraj. S ovim instaliranim stvarima spremni smo započeti s testiranjem da će sve raditi. Danas radimo s Windowsom 10, ali obrada je dostupna za većinu platformi, uključujući Raspberry Pi. Zamislite mogućnosti!

Ispitivanje Arduina

Prije nego što smo se upustili u stvaranje prilagođene skice, testirajmo Arduino i Servo s Processingom. Otvorena Datoteka> Primjeri, i odaberite ArduinoServo od Knjižnice / Arduino (firmata) mapa. Koristit ćemo ovo za testiranje našeg servo-računa, ali prvo ćemo možda trebati promijeniti nekoliko stvari.

Pomičite se prema skici prema dolje i pronađite ovu liniju:

println (Arduino.list ());

Ako je prokomentirano, uklonite dvije crte prije println (Arduino.list ());, i spremite skicu. Pokrenite ga klikom na ikonu za reprodukciju i pripazite na konzolu pri dnu. Na ovom će se popisu nalaziti sve priložene vašem COM priključci.

U mom slučaju, moj Arduino bio je na COM 8, što je bio treći port ovdje naveden. Ovo je važno s obzirom na to da kôd u retku ispod ima red čija vrijednost određuje koji COM port treba koristiti.

To moramo promijeniti kako bi odražavali naš COM port. Za mene je to bila treća pozicija ili indeks broj 2:

arduino = novi Arduino (ovaj, Arduino.list () [2], 57600);

Moramo napraviti nekoliko drugih sitnih promjena ovog koda da bismo ga testirali. Pomaknite se prema dolje gdje se postavljaju Arduino igle i komentirajte jedan od linija ovdje. Promijenite drugu na Pin 10.

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

Moramo učiniti istu stvar u Crtati() metoda:

arduino.servoWrite (10, ograničenje (mišX / 2, 0, 180)); // arduino.servoWrite (4, ograničenje (180 - mišX / 2, 0, 180)); 

Spremite skicu i pokrenite je. Trebali biste moći pomicati svoj servo uređaj pomicanjem miša naprijed i nazad po prozoru koji program generira.

Ako vam ne odgovara, provjerite svoj servo ožičenje i provjerite imate li pravi položaj niza za svoj COM port. Jednom kada znate da Arduino lijepo razgovara s Processingom, vrijeme je da krenete dalje.

Konfiguriranje kontrolera

Knjižnica Game Control Plus koju koristimo također ima snažnu konfiguraciju. Provjerite je li vaš kontroler uključen, otvorite konfigurator primjer projekta i pokrenite ga. Dobit ćete ovakav meni:

Kliknite na naziv kontrolera i pojavit će se mnogo veći prozor s konfiguracijom.

Ovo može izgledati prilično zastrašujuće, ali osmišljeno je da bude što jednostavnije. Na lijevoj strani popunite prvu tipku s imenom koje želite kao varijablu. Ova varijabla će kontrolirati položaj servo-ja, tako da ću to nazvati servoPos.

U okviru pored njega možete dati kratak opis onoga što radi. Sada uzmite regulator i pomaknite štap koji želite koristiti sa svojim servo uređajem. Malo eksperimentiranja pokazuje da desni thumbcick odgovara kutiji X Rotation. Povucite crtu između oznake servoPos varijablu, i ovaj okvir.

Sada moramo spremiti našu konfiguraciju kao datoteku podataka. U gornjem desnom uglu prozora popunite polje Uloga uređaja polje i Naziv datoteke polje.

Naziv datoteke je važan jer ćete ga koristiti u svom kodu. Jednostavno ga držim nazvavši ga xbs. Klik provjeriti zatim Uštedjeti. Ovo piše datoteku s uputama za naš kontroler koju kasnije možemo koristiti.

Priprema mape prilagođene skice

Postavimo radnu mapu. Otvorite praznu skicu za obradu i spremite je pod bilo kojim imenom. Ovo će stvoriti direktorij za nju na mjestu spremanja.

Sada idite na Dokumenti / obrada / knjižnice / GameControlPlus / primjeri / konfigurator i kopirajte mapu s oznakom podaci. Ova mapa sadrži konfiguracijsku datoteku koju smo upravo stvorili. Otvorite direktorij svoje novo spremljene prazne skice i zalijepite mapu podataka.

Izrada prilagođene skice

Sada je sve na svom mjestu i možemo započeti izradu skice koristeći naše dvije knjižnice. Proći ćemo ovaj korak po korak, ali možete preuzeti čitavu skicu i mapu podataka ako želite skočiti naprijed. Imajte na umu da ćete možda trebati modificirati kôd da bi odražavao svoje Arduino COM ulaze.

Započnite uvozom svih biblioteka koje će nam trebati:

uvoz obrada.serial. *; uvoz net.java.games.input. *; uvoz org.gamecontrolplus. *; uvoz org.gamecontrolplus.gui. *; uvoz cc.arduino. *; uvoz org.firmata. *;

Moramo izjaviti i svoje ControlDevice, I / O, i Težak, zajedno s a plutati zadržavanje vrijednosti sa naše sličice:

ContDevice cont; ControlIO kontrola; Arduino arduino; plutajući palac;

Naše postaviti() metoda stvara mali prozor, instancu kontrolera i uređaj odgovara našoj konfiguracijskoj datoteci. Ovdje je važno ispraviti naziv datoteke naše konfiguracijske datoteke:

praznina postava () veličina (360, 200); control = ControlIO.getInstance (ovo); cont = control.getMatchedDevice ("xbs"); if (cont == null) println ("ne danas kvrga"); // pisati bolje izjave o izlazu od mene System.exit (-1);  // println (Arduino.list ()); arduino = novi Arduino (ovaj, Arduino.list () [2], 57600); arduino.pinMode (10, Arduino.SERVO); 

Također provjeravamo da u ovoj fazi nema primjenjivog kontrolera, a prema potrebi i napustimo program. Dok je prozor stvoren sa veličina() nije potreban, dat će nam kasnije povratne informacije o tome dobivamo li korisne vrijednosti od našeg kontrolera. I ovdje pokrećemo svoj Arduino i zakačimo kao što smo to napravili tijekom testiranja.

Sada stvaramo malu metodu za hvatanje ulazne vrijednosti s našeg kontrolera i mapiramo je na vrijednosti koje će naš servo moći koristiti:

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

Ovaj jedan kôd koristi našu datoteku podataka za dobivanje imenovane kontrole servoPos, koji je povezan desnim palcem kontrolera i iz njega očitajte vrijednosti. Zatim preslikava vrijednosti i pohranjuje vrijednost u naše palac plutajuća varijabla.

Sada se ovaj kôd nikad ne zove, to ćemo ispraviti sada.

void draw () getUserInput (); pozadina (palac, 100.255); arduino.servoWrite (10, (int) palac); 

crtati() sličan je petlja() metoda u Arduino IDE. Svaki okvir, on zove getUserInput () metoda i ažurira palac vrijednost. Ona koristi ovu vrijednost za promjenu crvene vrijednosti pozadina () što nam daje vizualni pokazatelj promjene vrijednosti. Zatim tu vrijednost upisuje u servo pomoću arduino.servoWrite () funkcija. Imajte na umu da moramo glumiti palac kao cjelobrojna vrijednost jer funkcija servoWrite kao svoje argumente uzima dva cjelobrojna broja (pin broj i kut).

Provjerite da li u kodu postoje pogreške, spremite ih i kliknite Pokreni. Nakon malog odgađanja inicijalizacije Arduinoa, trebao bi izgledati ovako:

Upravljanje kontrolorom igre i Arduino: završeno!

Ovaj je projekt u mnogočemu bio poprilično iskusan za neiskusnog kodirača Naučite s kodiranjem projekata: 9 Udemy tečajeva za početnike Programer Učite s kodiranjem projekata: 9 Udemy tečajeva za programera početnike Stvarna je poteškoća u pronalaženju dobrih programskih tutorijala i tečajeva koji ne samo naučiti vas potrebnim vještinama, ali to radite s praktičnim projektima. U tome ulazi Udemy, unatoč fantastičnim knjižnicama koje su nam dostupne. Ono što predstavlja je nov način razmišljanja o kontroli robota i bilo kojeg drugog uređaja koji gradite.

Ovaj bi projekt savršeno odgovarao našem vodiču za izgradnju laserske turretnice Pew Pew! Kako izgraditi lasersku kupolu s klinom Arduino Pew! Kako izgraditi lasersku kupolu s arduinom Da li vam je dosadno? Moglo bi se izgraditi i laserska kupola. , dajući vam potpunu kontrolu nad njim. Možete postaviti Piezo zujanje poput našeg jednostavnog alarma Arduino Kako napraviti jednostavan Arduino alarmni sustav Kako napraviti jednostavan pokret za prepoznavanje Arduino alarma, a zatim uplašiti kurac od uljeza s visokim zvukovima alarma i treperavim svjetlima. Zvuči li to zabavno? Naravno da ima. To je cilj današnjeg Arduino projekta, prikladno… udžbenik i pomoću kontrolera promijeniti visinu zvuka ili boje svjetla.

Ili bi mogao, dobro, izgraditi ogromnog robota i preuzeti zemlju. Sve dok ste dovoljno dugo imali USB kabel!




Još ne komentari

O modernoj tehnologiji, jednostavnoj i pristupačnoj.
Vaš vodič u svijetu moderne tehnologije. Naučite kako koristiti tehnologije i uređaje koji nas okružuju svaki dan i naučite kako otkriti zanimljivosti na Internetu.