- Nødvendig materiale
- Kretsdiagram
- Styrespakemodul
- Kode og forklaring
- Kontrollerer lysdioder ved hjelp av joystick med Arduino
Det første som kommer i tankene våre når vi lytter til ordet Joystick er spillkontrolleren. Ja, det er nøyaktig det samme og kan brukes til spillformål. Bortsett fra spill, har den mange andre applikasjoner innen DIY elektronikk. Denne styrespaken er bare en kombinasjon av to potensiometre for henholdsvis X- og Y-planet. Den leser spenningen gjennom potensiometeret og gir Arduino analog verdi, og den analoge verdien endres når vi beveger styrespaken (som ganske enkelt er potensiometerpekeren).
I denne kretsen kobler vi joystick med Arduino ganske enkelt ved å kontrollere fire lysdioder i henhold til joystickens bevegelse. Vi har plassert 4 lysdioder på en slik måte at den representerer retningen på styrespakens bevegelse. Denne styrespaken har også en trykknapp som kan brukes til forskjellige andre formål eller kan stå inaktiv. En enkelt LED er også festet til bryteren til styrespaken, ettersom styrespakeknappen som trykkes på den enkelte lysdioden, vil slås PÅ.
Nødvendig materiale
- Arduino UNO
- Styrespakemodul
- Lysdioder-5
- Motstand: 100ohm-3
- Koble ledninger
- Brettbrett
Kretsdiagram
Styrespakemodul
Joysticks er tilgjengelige i forskjellige former og størrelser. En typisk joystick-modul er vist i figuren nedenfor. Denne joystick-modulen gir vanligvis analoge utganger, og utgangsspenningene som tilbys av denne modulen endres i henhold til retningen vi beveger den i. Og vi kan få bevegelsesretningen ved å tolke disse spenningsendringene ved hjelp av en mikrokontroller. Tidligere grensesnittet vi Joystick med AVR og Raspberry Pi.
Denne joystick-modulen har to akser som du kan se. De er X-akse og Y-akse. Hver akse av JOYSTICK er montert på et potensiometer eller potte. Midtpunktene til disse pottene blir kjørt ut som Rx og Ry. Så Rx og Ry er variable punkter i disse pottene. Når styrespaken er i beredskap, fungerer Rx og Ry som en spenningsdeler.
Når styrespaken beveges langs den horisontale aksen, endres spenningen ved Rx-pinnen. På samme måte endres spenningen ved Ry-pin når den beveges langs den vertikale aksen. Så vi har fire retninger av joystick på to ADC-utganger. Når pinnen flyttes, blir spenningen på hver pinne høy eller lav, avhengig av retning.
Her kobler vi denne joystick-modulen med Arduino UNO som kommer med en innebygd ADC (Analog til Digital Converter) -mekanisme som vist i videoen på slutten. Lær mer om bruk av Arduinos ADC her.
Kode og forklaring
Komplett Arduino-kode er nevnt på slutten.
I koden nedenfor har vi definert X- og Y-aksen til joystick-modulen for henholdsvis analog pin A0 og A1.
#define joyX A0 #define joyY A1
Nå, i koden nedenfor, initialiserer vi PIN 2 av Arduino for bryteren (trykknapp) på joystick-modulen, og verdien av buttonstate og buttonstate1 vil være 0 i starten.
int-knapp = 2; int buttonState = 0; int buttonState1 = 0;
I koden nedenfor setter vi overføringshastigheten til 9600 og definerte Pin 7 som en utgangsstift og knappestift som en inngangsstift. Opprinnelig vil knappestiften forbli høy til bryteren trykker.
ugyldig oppsett () {pinMode (7, OUTPUT); pinMode (knapp, INNGANG); digitalWrite (knapp, HØY); Serial.begin (9600); }
Her, i denne koden , leser vi verdiene fra den analoge stiften A0 og A1 og skriver ut i serie.
int xValue = analogRead (joyX); int yValue = analogRead (joyY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
Betingelsene for å slå LED på og av i henhold til bevegelsen til styrespaken, er definert i koden nedenfor. Her tar vi bare analoge verdier av spenning ved pin A0 og A1 av Arduino. Disse analoge verdiene vil endres når vi beveger styrespaken, og LED-lampen vil lyse i henhold til bevegelsen til styrespaken.
Denne tilstanden er for bevegelse av joystickakselen i retning Y-aksen
hvis (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } annet {digitalWrite (10, LAV);}
Denne tilstanden er for bevegelse av joystickakselen i retning X-aksen
hvis (xValue <= 10 && yValue> = 500) {digitalWrite (11, HIGH); } annet {digitalWrite (11, LAV);}
Denne tilstanden er for bevegelse av joystickakselen i + X-akseretning
hvis (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } annet {digitalWrite (9, LAV);}
Denne tilstanden er for bevegelse av joystickakselen i + Y-akseretning
hvis (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } annet {digitalWrite (8, LAV);}
Når vi beveger joystickakselen diagonalt, kommer en posisjon når den analoge verdien av X og Y vil være henholdsvis 1023 og 1023, både Pin 9 og Pin 8 LED vil lyse. Fordi den tilfredsstiller LED-tilstanden. Så for å fjerne denne uoverensstemmelsen har vi gitt en betingelse om at hvis verdien til (X, Y) er (1023, 1023), forblir begge LED-lampene i OFF-tilstand
hvis (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, LAV); }
Følgende tilstand brukes til å betjene LED-en som er koblet til trykknappbryteren. Når vi trykker på joystikkbryteren, slås lysdioden på og låses til knappen slippes. Det er valgfritt å bruke trykknappbryteren på styrespakmodulen.
hvis (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, HØY); } annet {digitalWrite (7, LAV);}
Kontrollerer lysdioder ved hjelp av joystick med Arduino
Etter å ha lastet opp koden til Arduino og koblet til komponentene i henhold til kretsskjemaet, kan vi nå kontrollere lysdiodene med joystick. Vi kan slå på de fire lysdiodene i hver retning i henhold til styrespakens bevegelse. Styrespaken har to potensiometer inni seg, den ene er for X-akse bevegelse og den andre er for Y-aksen bevegelse. Hvert potensiometer får 5v fra Arduino. Så når vi beveger styrespaken, vil spenningsverdien endres, og den analoge verdien på analoge pinner A0 og A1 vil også endres.
Så fra Arduino leser vi den analoge verdien for X- og Y-aksen og slår PÅ LED-lampene i henhold til joystickens aksebevegelse. En trykknappbryter på styrespakemodulen brukes til å kontrollere den enkle lysdioden i kretsen som vist i videoen nedenfor.