- Potreben material
- Shema vezja
- Modul igralne palice
- Koda in razlaga
- Upravljanje LED z uporabo igralne palice z Arduino
Prva stvar, ki nam pade na pamet ob poslušanju besede Joystick, je krmilnik iger. Da, popolnoma enako je in se lahko uporablja za igralne namene. Poleg iger na srečo ima veliko drugih aplikacij v elektroniki DIY. Ta krmilna palica ni nič drugega kot kombinacija dveh potenciometrov za ravnino X oziroma Y. Odčitava napetost skozi potenciometer in daje analogno vrednost Arduinu, analogna vrednost pa se spreminja, ko premikamo gred krmilne ročice (kar je preprosto kazalec potenciometra).
V tem vezju povezujemo igralno palico z Arduinom preprosto s krmiljenjem štirih LED glede na gibanje igralne palice. 4 LED smo postavili tako, da predstavlja smer gibanja gredi krmilne ročice. Ta krmilna palica ima tudi gumb, ki ga lahko uporabite za različne namene ali pa ga pustite v prostem teku. Na stikalo krmilne palice je pritrjena tudi ena LED, ko pritisnete gumb na krmilni palici, da se ena LED vklopi.
Potreben material
- Arduino UNO
- Modul igralne palice
- LED-5
- Upor: 100ohm-3
- Priključne žice
- Breadboard
Shema vezja
Modul igralne palice
Joysticks so na voljo v različnih oblikah in velikostih. Tipičen modul Joystick je prikazan na spodnji sliki. Ta modul Joystick običajno zagotavlja analogne izhode in izhodne napetosti, ki jih zagotavlja ta modul, se spreminjajo glede na smer, v katero ga premikamo. In smer gibanja lahko dobimo z interpretacijo teh sprememb napetosti z uporabo nekaterih mikrokrmilnikov. Prej smo Joystick povezovali z AVR in Raspberry Pi.
Ta modul krmilne palice ima dve osi, kot vidite. So osi X in Y. Vsaka os JOYSTICK je nameščena na potenciometer ali lonec. Srednji točki teh loncev sta izločeni kot Rx in Ry. Torej sta Rx in Ry spremenljivi točki teh loncev. Ko je igralna palica v pripravljenosti, Rx in Ry delujeta kot delilnik napetosti.
Ko krmilno palčko premaknete vzdolž vodoravne osi, se napetost na zatiču Rx spremeni. Podobno se pri premikanju vzdolž navpične osi napetost na zatiču Ry spremeni. Tako imamo štiri smeri igralne palice na dveh izhodih ADC. Ko se palica premakne, napetost na vsakem zatiču postane visoka ali nizka, odvisno od smeri.
Tu povezujemo ta modul Joystick z Arduino UNO, ki ima vgrajen mehanizem ADC (analogni v digitalni pretvornik), kot je prikazano v videu na koncu. Več o uporabi Arduinovega ADC lahko preberete tukaj.
Koda in razlaga
Na koncu je navedena celotna koda Arduino.
V spodnji kodi smo definirali osi X in Y modula Joystick za analogni pin A0 oziroma A1.
#define joyX A0 #define joyY A1
Zdaj v spodnji kodi inicializiramo PIN 2 Arduina za stikalo (tipko) modula Joystick in vrednost buttontate in buttonstate1 bo na začetku 0.
gumb int = 2; int buttonState = 0; int buttonState1 = 0;
V spodnji kodi smo nastavili hitrost prenosa na 9600 in Pin 7 opredelili kot izhodni zatič in gumb kot vhodni. Sprva bo zatič gumba ostal visok, dokler stikalo ne pritisne.
void setup () {pinMode (7, IZHOD); pinMode (gumb, INPUT); digitalWrite (gumb, VISOKO); Serial.begin (9600); }
Tu v tej kodi beremo vrednosti z analognega zatiča A0 in A1 in serijsko tiskamo.
int xValue = analogRead (joyX); int yValue = analogRead (joyY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
Pogoji za vklop in izklop LED glede na gibanje gredi krmilne palice so določeni v spodnji kodi. Tu pravkar vzamemo analogne vrednosti napetosti na pin A0 in A1 Arduino. Te analogne vrednosti se bodo spreminjale, ko premikamo krmilno palčko, LED pa bo svetila glede na gibanje krmilne palice.
Ta pogoj je za premikanje gredi krmilne palice v smeri osi -Y
if (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } else {digitalWrite (10, LOW);}
Ta pogoj je za premikanje gredi krmilne palice v smeri osi -X
if (xValue <= 10 && yValue> = 500) {digitalWrite (11, HIGH); } else {digitalWrite (11, LOW);}
Ta pogoj je za premikanje gredi krmilne palice v smeri osi + X.
if (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } else {digitalWrite (9, LOW);}
Ta pogoj je za premikanje gredi krmilne palice v smeri osi Y
if (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } else {digitalWrite (8, LOW);}
Ko diagonalno premaknemo gred krmilne ročice, pride en položaj, ko bo analogna vrednost X in Y 1023 oziroma 1023, bosta tako svetili LED 9 in Pin 8. Ker izpolnjuje pogoje LED. Torej, za odstranitev te neusklajenosti smo postavili pogoj, da če je vrednost (X, Y) (1023, 1023), potem obe LED ostaneta v stanju OFF
if (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, LOW); }
Spodnji pogoj se uporablja za upravljanje LED, priključene na stikalo tipk. Ko pritisnemo stikalo Joystick, se LED prižge in zaskoči, dokler se gumb ne sprosti. Neobvezna uporaba stikala na gumbu na modulu Joystick.
če (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, VISOKO); } else {digitalWrite (7, LOW);}
Upravljanje LED z uporabo igralne palice z Arduino
Po nalaganju kode v Arduino in priključitvi komponent po shemi vezja lahko zdaj LED-diode upravljamo s krmilno palčko. V skladu s premikanjem gredi krmilne ročice lahko vKLOPIMO štiri LED. Joystick ima v sebi dva potenciometra, enega za premikanje osi X in drugega za premikanje osi Y. Vsak potenciometer dobi 5v od Arduina. Ko premikamo krmilno palčko, se bo vrednost napetosti spreminjala in spreminjala se bo tudi analogna vrednost na analognih nožicah A0 in A1.
Torej, iz Arduina beremo analogno vrednost za os X in Y in vklopimo LED glede na premikanje osi krmilne palice. Tipkovno stikalo na modulu Joystick se uporablja za nadzor posamezne LED v vezju, kot je prikazano na spodnjem videu.