- Nødvendigt materiale
- Kredsløbsdiagram
- Joystick-modul
- Kode og forklaring
- Styring af lysdioder ved hjælp af joystick med Arduino
Den første ting, der kommer i vores sind, når vi lytter til ordet Joystick, er spilcontrolleren. Ja, det er nøjagtigt det samme og kan bruges til spilformål. Bortset fra spil har den mange andre applikationer inden for DIY-elektronik. Denne joystick er intet andet end en kombination af to potentiometre til henholdsvis X- og Y-plan. Den læser spændingen gennem potentiometeret og giver Arduino en analog værdi, og den analoge værdi ændres, når vi bevæger joystickakslen (som simpelthen bare er potentiometermarkøren).
I dette kredsløb forbinder vi joystick med Arduino ved simpelthen at styre fire lysdioder i henhold til joystickets bevægelse. Vi har placeret 4 lysdioder på en sådan måde, at det repræsenterer retningen af joystickakslens bevægelse. Denne joystick har også en trykknap, som kan bruges til forskellige andre formål eller kan stå i tomgang. En enkelt LED er også fastgjort til kontakten på joysticket, da joystick-knappen trykkes på den enkelte LED vil tænde.
Nødvendigt materiale
- Arduino UNO
- Joystick-modul
- LED-5
- Modstand: 100ohm-3
- Tilslutning af ledninger
- Brødbræt
Kredsløbsdiagram
Joystick-modul
Joysticks fås i forskellige former og størrelser. Et typisk joystick-modul vises i nedenstående figur. Dette joystick-modul leverer typisk analoge udgange, og de udgangsspændinger, der leveres af dette modul, ændres konstant i henhold til den retning, vi bevæger det i. Og vi kan få bevægelsesretningen ved at fortolke disse spændingsændringer ved hjælp af en mikrokontroller. Tidligere interfacede vi Joystick med AVR og Raspberry Pi.
Dette joystick-modul har to akser, som du kan se. De er X-akse og Y-akse. Hver akse af JOYSTICK er monteret på et potentiometer eller potte. Midtpunkterne på disse potter køres ud som Rx og Ry. Så Rx og Ry er variable punkter i disse potter. Når joysticket er i standby, fungerer Rx og Ry som en spændingsdeler.
Når joysticket bevæges langs den vandrette akse, ændres spændingen ved Rx-pin. Tilsvarende ændres spændingen ved Ry-pin, når den bevæges langs den lodrette akse. Så vi har fire retninger af joystick på to ADC-udgange. Når stokken flyttes, går spændingen på hver stift høj eller lav afhængigt af retning.
Her forbinder vi dette joystick-modul med Arduino UNO, som leveres med en indbygget ADC-mekanisme (analog til digital konverter) som vist i videoen i slutningen. Lær mere om brug af Arduinos ADC her.
Kode og forklaring
Komplet Arduino-kode er nævnt i slutningen.
I nedenstående kode har vi defineret X- og Y-aksen på joystickmodulet til henholdsvis analog pin A0 og A1.
#definer joyX A0 #definer joyY A1
Nu i nedenstående kode initialiserer vi PIN 2 i Arduino til kontakten (trykknap) på joystickmodulet, og værdien af buttonstate og buttonstate1 vil være 0 i starten.
int-knap = 2; int buttonState = 0; int buttonState1 = 0;
I nedenstående kode indstiller vi baudhastigheden til 9600 og definerede Pin 7 som en output pin og knap pin som en input Pin. Oprindeligt forbliver knapstiften høj, indtil kontakten trykker.
ugyldig opsætning () {pinMode (7, OUTPUT); pinMode (knap, INPUT); digitalWrite (knap, HØJ); Serial.begin (9600); }
Her i denne kode læser vi værdierne fra den analoge pin A0 og A1 og udskrives serielt.
int xValue = analogRead (joyX); int yValue = analogRead (joyY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
Betingelserne for at tænde og slukke for LED i henhold til joystickakslens bevægelse er defineret i nedenstående kode. Her tager vi bare analoge spændingsværdier ved pin A0 og A1 i Arduino. Disse analoge værdier ændres, når vi bevæger joysticket, og LED'en vil lyse i henhold til joystickets bevægelse.
Denne betingelse er for bevægelse af joystickakslen i retning Y-aksen
hvis (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } andet {digitalWrite (10, LAV);}
Denne betingelse er for bevægelse af joystickakslen i retning af -X aksen
hvis (xValue <= 10 && yValue> = 500) {digitalWrite (11, HIGH); } andet {digitalWrite (11, LAV);}
Denne betingelse er for bevægelse af joystickakslen i + X-akseretning
hvis (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } andet {digitalWrite (9, LAV);}
Denne betingelse er for bevægelse af joystickakslen i + Y-aksens retning
hvis (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } andet {digitalWrite (8, LAV);}
Når vi bevæger joystickakslen diagonalt, kommer en position, når den analoge værdi af X og Y vil være henholdsvis 1023 og 1023, både Pin 9 og Pin 8 LED vil lyse. Fordi det opfylder betingelsen for LED. Så for at fjerne denne uoverensstemmelse har vi givet en betingelse om, at hvis værdien af (X, Y) er (1023, 1023), forbliver begge lysdioderne i OFF-tilstand
hvis (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, LAV); }
Nedenstående tilstand bruges til at betjene den LED, der er tilsluttet trykknappen. Når vi trykker på joystick-kontakten, tændes LED'en og låses, indtil knappen slippes. Det er valgfrit at bruge trykknapkontakten på joystickmodulet.
hvis (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, HIGH); } andet {digitalWrite (7, LAV);}
Styring af lysdioder ved hjælp af joystick med Arduino
Efter at have uploadet koden til Arduino og tilslut komponenterne i henhold til kredsløbsdiagrammet, kan vi nu styre lysdioderne med joystick. Vi kan tænde de fire lysdioder i hver retning i henhold til joystickakslens bevægelse. Joysticken har to potentiometer inde i den, den ene er til X-akse bevægelse og en anden er til Y-aksen bevægelse. Hvert potentiometer får 5v fra Arduino. Så når vi bevæger joysticket, ændres spændingsværdien, og den analoge værdi på analoge ben A0 og A1 ændres også.
Så fra Arduino læser vi den analoge værdi for X- og Y-aksen og tænder lysdioderne i henhold til joystickets aksebevægelse. En trykknapkontakt på joystickmodulet bruges til at styre den enkelte LED i kredsløbet som vist i videoen nedenfor.