Kako se koristi Arduino Džojstik – PS2 Joystick
Nakon što savladomo analogna i digitalna upravljanja pomoću Arduino mikrokontrolera, bilo da se radi o Inputima (ulaznim) ili Outputima (izlaznim), uvijek gledamo da svoj projekat nadogradimo nečim što će nam povećati funkcionalnosti, a pojednostaviti upravljačke komande. Upravo jedan takav modul je Džojstik. Na samu pomen Džojstik, većini populacije (posebno mlađe), prvo što padne na pamet je PlayStation ili neka druga konzola za igranje. Upravo tako, igraće konzole imaju Džojstike, ali isto tako Džojstike koriste i neke ozbiljnije mašine i postrojenja na svojim kontrolnim tablama ili upravljačkim kutijama. Avioni, helikopteri, dronovi, bageri, mikseri za beton, kranovi, industrijski pogoni i mnogi drugi uređaji su skoro pa nezamislivi bez kontrola putem džojstika.
Ugradnjom Džojstika u projekat možete zamijeniti i do 20-30 dugmića na kontolnoj tabli!
U ovom tutorijalu ćemo objasniti:
- Šta je to PS2 Džojstik modul i kako se koristi?
- Šema povezivanja i kod za kontrolu PS2 Džojstik modula
- Specifikacija materijala
Šta je to PS2 Džojstik modul i kako se koristi?
Savjet: u slučaju da ne znate šta je potenciometar i kako se koristi, radi lakšeg praćenja tutorijala, savjetujemo Vam da pročitate tutorijal “Kako se Koristi Potenciometar u Arduino Projektima”.
U uvodnom dijelu rekli smo gdje se sve Džojstik može koristiti, dok ćemo u nastavku pobliže objasniti na kojem principu radi i kako se programira PS2 Džojstik. Kao što možete vidjeti na slici ispod, kada skinemo poklopac vidimo da se Arduino Džojstik PS2 sastoji od 2 potenciometra i dugmeta.
Sada kada znamo koje su osnovne komponente našeg modula, bitno je naglasiti da nisu svi Džojstici isti tj. da postoji više vrsta i pod vrsta. Napredovanjem elektronike i automatike, svaki projekat je specifičan sam po sebi i samim tim zahtjeva karakteristične Džojstike. Neki od najčešće korištenih su:
- Analogni Džojstici (potenciometar 0-1023)
- Digitalni Džojstici (0 – 1)
- Povratni (Vraćanje pozicije – sredina),
- Fiksni (Zakljkučavanje pozicije),
- Fiksni kontakti za povezivanje (NO ili NC),
- Promjenjivi kontakti za povezivanje (NO ili NC),
Nakon što smo objasnili grube podjele Džojstika, vratimo se na naš primjer. Na slici ispod možete vidjeti ose kretanja.
Na slici br.1 vidjeli smo da se naš Džojstik sastoji od dva potenciometra i dugmeta, što znači da je to analogni Džojstik raspona mjerenja od 0 do 1023 po osi. Super stvar ovoga modula je ta što ima na sebi ugrađeno dugme (push button) koje se aktivira pritiskom na Džojstik. Prilikom očitanja dugmeta njegovo stanje je uvijek HIGH ili 1, a nakon što se pritisne stanje se promjeni u LOW ili 0.
Ako uzmete Džojstik u ruku i pomjerite ga u bilo kojem pravcu osjetit ćete da navedeni uvijek teži da se vrati u centar (sredinu), što znači da je POVRATNI.
Obzirom da ovaj potenciometar ima dvije ose X i Y, potrebna su i dva potenciometra koja mjere poziciju ručke Džojstika. Jedan potenciometar je zadužen za X osu, dok je drugi potenciometar zadužen za Y osu. Kao što možete vidjeti na slici iznad kada je ručka Džojstika u sredini, analogna očitava vrijednost i X i Y ose bi trebala biti 511.
Napomena: Potenciometri koji se koriste u ovom Džojstiku imaju dozvoljeno odstupanje tako da je u praksi skoro nemoguće dobiti baš 100% tačno očitanje vrijednosti 511, pa čak ni dva ista potenciometra u poziciji sredine neće pokazati jednako (1% odsupanja na 1023 bi znacilo ± 10,23).
Radi lakšeg shvatanja, kao primjer, uzet ćemo samo jednu osu tj. osu X. Jedini način kako bi jednim potenciometrom mogli kontrolisati očitanje dva smjera (naprijed i nazad – osa x) je ta da je potenciometar u sredini na vrijednosti 511 ili približno.
Slučaj 1: Nakon što krenemo gurati džojstik prema gore, očitana vrijednost će se postepeno mjenjati od 511 do 1023. Ako pustimo džojstik on će se vratiti u sredinu i dobit ćemo ponovo vrijednost 511.
Slučaj 2: Nakon što krenemo gurati džojstik prema dole, očitana vrijednost će se postepeno mjenjati od 511 do 0. Ako pustimo džojstik on će se vratiti u sredinu i dobit ćemo ponovo vrijednost 511.
Gore navedeni pricip je apsolurno jednak i za osu Y (desno i lijevo)!
Prilikom očitanja dugmeta njegovo stanje je uvijek HIGH ili 1, a nakon što se pritisne stanje se promjeni u LOW ili 0.
Šema povezivanja i kod za kontrolu PS2 Džojstik modula
Pa da krenemo sa Šemom i kodom. U slučaju da ne želite prepisivati kod sa slike, kliknite na ovaj GITHUB link i preuzmite kod iz ovog tutorijala, kao i od ostalih Tutorijala.
Kao što možete vidjeti na slici iznad koristili smo pet komunikacijskih kablova između Arduino Uno mikrokontrolera i Džojstik modula:
Joystick | Arduino |
VCC | +5V |
GND | GND (-) |
VRX | A0 |
VRY | A1 |
SW | Bilo koji digitalni pin (u našem primjeru pin 7) |
Nakon što smo povezali modul sa kontrolerom kao na semi iznad otvorimo Arduino IDE i krenimo sa programiranjem.
Iz koda se može zaključiti da je programski kod skoro pa isti kao u tutorijalima “Kako se koristi Potenciometar u Arduino Projektima” i “DUGME, TIPKA ILI PREKIDAČ U ARDUINO SVIJETU (PUSH BUTTON – PULL-UP / PULL-DOWN )”.
Kao što smo prethodno naglasili da potenciometri imaju dozvoljena odstupanja, na slici iznad, prva četiri ispisa su X = 496 i Y = 503. Razlika X ose od očekivanih 511 je cca: 15, dok je razlika Y ose svega 9. Iako se ovi brojevi čine veliki u poređenju sa rasponom od 0 do 1023 X osa ima odsupanje cca: -1,5%, dok Y osa ima odstupanje od cca: -0,8%. Brojke sa ovoga džojstika čija je vrijednost vrijednost 5-10,00KM su i više nego prolazne za 99% projekata.
Četvrti i peti ispis X = 1023 su bili kada je džojstik pomaknut prema gore,
Šesti ispis je pozicija SREDINA,
Sedmi i osmi ispis X = 0 su bili kada je džojstik pomaknut prema dole,
Deveti ispis je bio SREDINA,
Deseti i jedanaesti ispis Y = 0 su bili kada je Džojstik pomaknut prema lijevo,
Dvanaesti ispis je bio SREDINA,
Trinaesti i četrnaesti Y = 1023su bili kada je džojstik pomaknut u desno
Zaključak: S namjerom smo koristili analogni Džojstik sa dvije ose jer se on smatra kao dosta komplikovaniji od digitalnog Džojstika. Ovim tutorijalom smo objasnili samo najosnovniji primjer kako se koristi Arduino PS2 Džojstik. Koristeći prethodne tutorijale možete eksperimentisati i napraviti jako interesantan projekat.
Zadaci:
Zadatak br.1 (lakši zadatak):
Projekat proširiti sa 4 led diode i ugraditi odgovarajuće otpornike. Postaviti sljedeće uslove:
- Ako je vrijednost X ose veća od 530 upali led diodu koja označava poziciju GORE
- Ako je vrijednost X ose manja od 480 upali led diodu koja označava poziciju DOLE
- Ako je vrijednost Y ose veća od 530 upali led diodu koja označava poziciju DESNO
- Ako je vrijednost Y ose manja od 480 upali led diodu koja označava poziciju LIJEVO
- Ako je dugme (push button) pritisnut upali sve četiri led diode
Zadatak br.2 (teži zadatak):
Projekat proširiti sa 4 led diode i ugraditi odgovarajuće otpornike. Postaviti sljedeće uslove:
Koristeći analogne vrijednosti Džojstika, MAP-irajte navedene i koristeći PWM modulaciju konstrolišite intezitet svjetlosti četiri led diode.
Pomoc pri izradi zadataka možete naći u sljedećim tutorijalima:
“Kako se koristi Naredba IF i MAP”
“Kako se koristi Potenciometar u Arduino Projektima”
“DUGME, TIPKA ILI PREKIDAČ U ARDUINO SVIJETU (PUSH BUTTON – PULL-UP / PULL-DOWN )”
“PWM (Pulse Width Modulation) i FOR Petlja”
“LED Diode, Otpornici i Eksperimentalna Ploča”
Specifikacija materijala:
- 1x Arduino Uno
- 1x Breadboard
- 1x PS2 Džojstik 2 ose
- 4x Led diode (zadatak)
- 4x otpornik (zadatak)
- 15x Komunikacijski kablovi
Napomena: Nakon što pročitate bilo koji Turijal na internetu, uvijek pogledajte Datasheet bilo koje komponente ili senzora, jer se tu nalaze svi bitni fabrički detalji!