- Tarvittava materiaali
- Piirikaavio
- Joystick-moduuli
- Koodi ja selitys
- LEDien hallinta ohjaussauvalla Arduinon kanssa
Ensimmäinen asia, joka tulee mieleemme, kun kuuntelemme sanaa Joystick, on peliohjain. Kyllä, se on täsmälleen sama ja sitä voidaan käyttää pelaamiseen. Pelaamisen lisäksi sillä on monia muita sovelluksia DIY-elektroniikassa. Tämä ohjaussauva on vain kahden potentiometrin yhdistelmä X- ja Y-tasolle. Se lukee jännitteen potentiometrin läpi ja antaa analogisen arvon Arduinolle, ja analoginen arvo muuttuu, kun liikutamme sauva-akselia (joka on yksinkertaisesti potentiometrin osoitin).
Tässä piirissä yhdistämme ohjaussauvan Arduinoon yksinkertaisesti ohjaamalla neljää LEDiä ohjaussauvan liikkeen mukaan. Olemme sijoittaneet 4 lediä siten, että se edustaa ohjaussauvan akselin liikkeen suuntaa. Tässä ohjaussauvassa on myös painike, jota voidaan käyttää muihin tarkoituksiin tai se voidaan jättää käyttämättä. Ohjaussauvan kytkimeen on kiinnitetty myös yksi LED, kun ohjaussauvapainiketta painettaessa yksi LED syttyy.
Tarvittava materiaali
- Arduino UNO
- Joystick-moduuli
- LEDit-5
- Vastus: 100ohm-3
- Johtojen liittäminen
- Leipälauta
Piirikaavio
Joystick-moduuli
Ohjaussauvoja on saatavana eri muotoisina ja kokoisina. Tyypillinen ohjaussauva-moduuli on esitetty alla olevassa kuvassa. Tämä ohjaussauva-moduuli tarjoaa tyypillisesti analogisia lähtöjä, ja tämän moduulin antamat lähtöjännitteet muuttuvat jatkuvasti sen suunnan mukaan, johon liikutamme sitä. Ja voimme saada liikkeen suunnan tulkitsemalla nämä jännitteen muutokset käyttämällä jotakin mikro-ohjainta. Aikaisemmin liitimme Joystickin AVR: n ja Raspberry Pi: n kanssa.
Tässä joystick-moduulissa on kaksi akselia, kuten näet. Ne ovat X-akseli ja Y-akseli. Jokainen JOYSTICK-akseli on asennettu potentiometriin tai pottiin. Näiden ruukkujen keskipisteet ajetaan ulos Rx: ksi ja Ry: ksi. Joten Rx ja Ry ovat vaihtelevia pisteitä näille potille. Kun ohjaussauva on valmiustilassa, Rx ja Ry toimivat jännitteenjakajina.
Kun ohjaussauvaa liikutetaan vaaka-akselia pitkin, jännite Rx-nastassa muuttuu. Samoin, kun sitä liikutetaan pystysuoraa akselia pitkin, Ry-nastan jännite muuttuu. Joten meillä on neljä ohjaussauvan suuntaa kahdessa ADC-lähdössä. Kun keppiä liikutetaan, jokaisen tapin jännite nousee korkealle tai matalalle suunnasta riippuen.
Tässä yhdistämme tämän Joystick-moduulin Arduino UNO: han, jossa on sisäänrakennettu ADC (Analog to Digital Converter) -mekanismi, kuten videon lopussa on esitetty. Lue lisää Arduinon ADC: n käytöstä täältä.
Koodi ja selitys
Täydellinen Arduino-koodi mainitaan lopussa.
Alla olevassa koodissa olemme määrittäneet joystick-moduulin X- ja Y-akselin analogisille nastoille A0 ja A1.
#define joyX A0 #define joyY A1
Nyt alla olevista koodin, olemme alustetaan PIN 2 Arduino kytkimen (painikkeen) ja Ohjaussauvamoduuli ja arvon buttonstate ja buttonstate1 on 0 alussa.
int-painike = 2; int-painikeTila = 0; int-painikeTila1 = 0;
Alla olevassa koodissa asetamme siirtonopeuden 9600: ksi ja määritimme nastan 7 lähtönastaksi ja painiketapin tulotapiksi. Aluksi painikkeen tappi pysyy korkealla, kunnes kytkin painaa.
void setup () {pinMode (7, OUTPUT); pinMode (painike, INPUT); digitalWrite (painike, KORKEA); Sarjan alku (9600); }
Tässä tässä koodissa luemme arvot analogisista nastoista A0 ja A1 ja tulostamme sarjana.
int xArvo = analoginenLue (joyX); int yArvo = analoginenLue (iloY); Sarja.tulos (xValue); Serial.print ("\ t"); Serial.println (yValue);
Edellytykset LED-valojen kytkemiseksi päälle ja pois päältä joystick- akselin liikkeen mukaan on määritelty alla olevassa koodissa. Tässä otamme vain analogiset jännitearvot Arduinon nastoihin A0 ja A1. Nämä analogiarvot muuttuvat, kun liikutamme ohjainta ja LED palaa ohjaussauvan liikkeen mukaan.
Tämä ehto koskee joystick-akselin liikettä -Y-akselin suunnassa
if (xArvo> = 0 && yArvo <= 10) {digitalWrite (10, HIGH); } else {digitalWrite (10, LOW);}
Tämä ehto koskee joystick-akselin liikettä -X-akselin suunnassa
if (xarvo <= 10 && yValue> = 500) {digitalWrite (11, HIGH); } else {digitalWrite (11, LOW);}
Tämä ehto koskee joystick-akselin liikettä + X-akselin suunnassa
if (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } else {digitalWrite (9, LOW);}
Tämä ehto koskee ohjaussauvan akselin liikettä + Y-akselin suunnassa
if (xarvo> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } else {digitalWrite (8, LOW);}
Kun liikutamme ohjaussauvan akselia diagonaalisesti, yksi asento tulee, kun X: n ja Y: n analogiarvo on vastaavasti 1023 ja 1023, sekä nasta 9 että nasta 8 palavat. Koska se täyttää LEDin kunnon. Joten tämän ristiriidan poistamiseksi olemme antaneet ehdon, että jos (X, Y) arvo on (1023, 1023), niin molemmat ledit pysyvät OFF-tilassa
if (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, LOW); }
Alla olevaa ehtoa käytetään painikekytkimeen kytketyn LEDin käyttämiseen. Kun painamme ohjaussauvaa, LED syttyy ja lukittuu, kunnes painike vapautuu. Joystick-moduulin painikekytkimen käyttö on valinnaista.
if (buttonState == LOW) {Sarja.println ("Kytkin = Korkea"); digitalWrite (7, HIGH); } else {digitalWrite (7, LOW);}
LEDien hallinta ohjaussauvalla Arduinon kanssa
Kun koodi on ladattu Arduinoon ja kytketty komponentit piirikaavion mukaisesti, voimme nyt ohjata LED-valoja ohjaussauvalla. Voimme kytkeä päälle neljä lediä kumpaankin suuntaan joystick-akselin liikkeen mukaan. Ohjaussauvassa on kaksi potentiometriä, yksi X-akselin ja toinen Y-akselin liikettä varten. Jokainen potentiometri saa 5v Arduinosta. Joten kun liikutamme sauvaohjainta, jännitteen arvo muuttuu ja myös analoginen nasta A0 ja A1 muuttuu.
Joten Arduinosta luemme X- ja Y-akselien analogiarvot ja kytkemme LEDit päälle joystickin akseliliikkeen mukaan. Ohjaussauvan moduulin painikekytkintä käytetään ohjaamaan piirin yhtä LEDiä alla olevan videon mukaisesti.