- Material necesar
- Diagrama circuitului
- Modulul Joystick
- Cod și explicație
- Controlul LED-urilor folosind Joystick cu Arduino
Primul lucru care ne vine în minte ascultând cuvântul Joystick este controlerul jocului. Da, este exact la fel și poate fi folosit în scopuri de joc. În afară de jocuri, are multe alte aplicații în electronica DIY. Acest joystick nu este altceva decât o combinație de două potențiometre pentru planul X și respectiv Y. Citește tensiunea prin potențiometru și dă valoare analogică Arduino, iar valoarea analogică se schimbă pe măsură ce mutăm arborele joystick-ului (care este pur și simplu indicatorul potențiometrului).
În acest circuit, interfațăm Joystick-ul cu Arduino pur și simplu controlând patru LED-uri conform mișcării Joystick-ului. Am amplasat 4 LED-uri în așa fel încât să reprezinte direcția mișcării arborelui joystick-ului. Acest joystick are, de asemenea, un buton care poate fi utilizat în alte scopuri sau poate fi lăsat inactiv. Un singur LED este, de asemenea, atașat la comutatorul joystick-ului, deoarece butonul joystick-ului apăsat pe acel LED va porni.
Material necesar
- Arduino UNO
- Modulul Joystick
- LED-5
- Rezistor: 100ohm-3
- Conectarea firelor
- Breadboard
Diagrama circuitului
Modulul Joystick
Joystick-urile sunt disponibile în diferite forme și dimensiuni. Un modul tipic Joystick este prezentat în figura de mai jos. Acest modul Joystick oferă de obicei ieșiri analogice și tensiunile de ieșire furnizate de acest modul continuă să se schimbe în funcție de direcția în care îl deplasăm. Și putem obține direcția de mișcare interpretând aceste modificări de tensiune folosind un microcontroler. Anterior am interfațat Joystick-ul cu AVR și Raspberry Pi.
Acest modul joystick are două axe, după cum puteți vedea. Acestea sunt axa X și axa Y. Fiecare axă a JOYSTICK este montată pe un potențiometru sau oală. Punctele de mijloc ale acestor vase sunt alungate ca Rx și Ry. Deci Rx și Ry sunt puncte variabile ale acestor pot-uri. Când joystick-ul este în standby, Rx și Ry acționează ca un divizor de tensiune.
Când joystick-ul este deplasat de-a lungul axei orizontale, tensiunea la pinul Rx se schimbă. În mod similar, atunci când este deplasat de-a lungul axei verticale, tensiunea la pinul Ry se schimbă. Deci, avem patru direcții ale Joystick-ului pe două ieșiri ADC. Când butonul este mișcat, tensiunea pe fiecare știft crește sau scade în funcție de direcție.
Aici, conectăm acest modul Joystick la Arduino UNO care vine cu un mecanism încorporat ADC (Analog to Digital Converter), așa cum se arată în video la sfârșit. Aflați mai multe despre utilizarea ADC-ului Arduino aici.
Cod și explicație
Codul Arduino complet este menționat la sfârșit.
În codul de mai jos, am definit axele X și Y ale modulului Joystick pentru pinul analogic A0 și respectiv A1.
#define joyX A0 #define joyY A1
Acum, în codul de mai jos, inițializăm PIN-ul 2 al Arduino pentru Switch (buton) al modulului Joystick, iar valoarea buttonstate și buttonstate1 va fi 0 la început.
buton int = 2; int buttonState = 0; int buttonState1 = 0;
În codul de mai jos, configurăm rata de transmisie la 9600 și definim pinul 7 ca pin de ieșire și pinul butonului ca pin de intrare. Inițial, pinul butonului va rămâne ridicat până când comutatorul va apăsa.
void setup () {pinMode (7, OUTPUT); pinMode (buton, INPUT); digitalWrite (buton, HIGH); Serial.begin (9600); }
Aici, în acest cod citim valorile de la pinul analogic A0 și A1 și tipărim în serie.
int xValue = analogRead (joyX); int yValue = analogRead (bucurieY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
Condițiile pentru pornirea și oprirea LED-ului conform mișcării arborelui Joystick sunt definite în codul de mai jos. Aici luăm doar valori analogice ale tensiunii la pinii A0 și A1 din Arduino. Aceste valori analogice se vor schimba pe măsură ce deplasăm joystick-ul, iar LED-ul va lumina în funcție de mișcarea joystick-ului.
Această condiție este pentru deplasarea arborelui Joystick în direcția axei -Y
if (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } else {digitalWrite (10, LOW);}
Această condiție este pentru deplasarea arborelui Joystick în direcția axei -X
if (xValue <= 10 && yValue> = 500) {digitalWrite (11, HIGH); } else {digitalWrite (11, LOW);}
Această condiție este pentru deplasarea arborelui Joystick în direcția axei + X
if (xValue> = 1020 &&YValue> = 500) {digitalWrite (9, HIGH); } else {digitalWrite (9, LOW);}
Această condiție este pentru deplasarea arborelui Joystick în direcția axei + Y
if (xValue> = 500 &&YValue> = 1020) {digitalWrite (8, HIGH); } else {digitalWrite (8, LOW);}
Când deplasăm arborele joystickului în diagonală, atunci apare o poziție când valoarea analogică a lui X și Y va fi 1023 și respectiv 1023, ambele LED-uri Pin 9 și Pin 8 vor străluci. Deoarece satisface starea LED-ului. Deci, pentru eliminarea nepotrivirii, am dat o condiție că, dacă valoarea lui (X, Y) este (1023, 1023), atunci ambele LED-uri rămân în starea OFF
if (xValue> = 1020 &&YValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, LOW); }
Condiția de mai jos este utilizată pentru a acționa LED-ul conectat la comutatorul cu buton. Când apăsăm comutatorul Joystick, LED-ul se aprinde și se blochează până când butonul se eliberează. Este opțional să utilizați comutatorul butonului de pe modulul Joystick.
if (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, HIGH); } else {digitalWrite (7, LOW);}
Controlul LED-urilor folosind Joystick cu Arduino
După încărcarea codului pe Arduino și conectarea componentelor conform schemei de circuite, acum putem controla LED-urile cu Joystick. Putem aprinde cele patru LED-uri în fiecare direcție conform mișcării arborelui Joystick. Joystick-ul are două potențiometre în interior, unul este pentru mișcarea axei X și altul este pentru mișcarea axei Y. Fiecare potențiometru primește 5v de la Arduino. Deci, pe măsură ce deplasăm joystick-ul, valoarea tensiunii se va schimba, iar valoarea analogică la pinii analogici A0 și A1 se va schimba, de asemenea.
Deci, din Arduino, citim valoarea analogică pentru axele X și Y și aprindem LED-urile conform mișcării axei joystick-ului. Un comutator cu buton pe modulul Joystick este utilizat pentru a controla singurul LED din circuit așa cum se arată în videoclipul de mai jos.