- Material krävs
- Kretsschema
- Joystick-modul
- Kod och förklaring
- Kontrollerar lysdioder med joystick med Arduino
Det första som kommer i vårt sinne när vi lyssnar på ordet Joystick är spelkontrollen. Ja, det är exakt detsamma och kan användas för speländamål. Förutom spel har den många andra applikationer inom DIY-elektronik. Denna joystick är inget annat än en kombination av två potentiometrar för X- och Y-plan. Den läser spänningen genom potentiometern och ger Arduino ett analogt värde, och det analoga värdet ändras när vi flyttar joystickaxeln (som helt enkelt är potentiometerpekaren).
I den här kretsen gränssnitt vi joystick med Arduino helt enkelt genom att styra fyra lysdioder enligt joystickens rörelse. Vi har placerat fyra lysdioder på ett sådant sätt att det representerar riktningen för joystickaxelns rörelse. Denna joystick har också en tryckknapp som kan användas för olika andra ändamål eller kan lämnas inaktiv. En enda lysdiod är också ansluten till styrspakens omkopplare, eftersom joystick-knappen tryckt på den enskilda lysdioden tänds.
Material krävs
- Arduino UNO
- Joystick-modul
- Lysdioder-5
- Motstånd: 100ohm-3
- Anslutande ledningar
- Bakbord
Kretsschema
Joystick-modul
Joysticks finns i olika former och storlekar. En typisk joystickmodul visas i figuren nedan. Denna joystick-modul tillhandahåller vanligtvis analoga utgångar och de utgångsspänningar som tillhandahålls av den här modulen ändras i enlighet med den riktning vi rör den i. Och vi kan få rörelseriktningen genom att tolka dessa spänningsförändringar med hjälp av någon mikrokontroller. Tidigare kopplade vi joystick med AVR och Raspberry Pi.
Denna joystickmodul har två axlar som du kan se. De är X- och Y-axlar. Varje axel av JOYSTICK är monterad på en potentiometer eller kruka. Mittpunkterna i dessa krukor drivs ut som Rx och Ry. Så Rx och Ry är variabla punkter till dessa krukor. När joysticken är i beredskap fungerar Rx och Ry som en spänningsdelare.
När joysticken flyttas längs den horisontella axeln ändras spänningen vid Rx-stiftet. På samma sätt, när den flyttas längs den vertikala axeln, ändras spänningen vid Ry-stiftet. Så vi har fyra riktningar av joystick på två ADC-utgångar. När pinnen flyttas går spänningen på varje stift hög eller låg beroende på riktning.
Här ansluter vi denna joystick-modul till Arduino UNO som levereras med en inbyggd ADC-mekanism (analog till digital omvandlare) som visas i videon i slutet. Läs mer om hur du använder Arduinos ADC här.
Kod och förklaring
Komplett Arduino-kod nämns i slutet.
I nedanstående kod har vi definierat X- och Y-axeln för joystickmodulen för den analoga stiftet A0 respektive A1.
#define joyX A0 #define joyY A1
Nu, i nedanstående kod, initialiserar vi PIN 2 i Arduino för omkopplaren (tryckknapp) på joystickmodulen och värdet på knappstatus och knappstat1 blir 0 i början.
int-knapp = 2; int buttonState = 0; int buttonState1 = 0;
I koden nedan ställer vi in överföringshastigheten till 9600 och definierade stift 7 som utgångsstift och knappstift som ingångsstift. Inledningsvis förblir knappstiftet högt tills strömbrytaren trycker på.
ogiltig installation () {pinMode (7, OUTPUT); pinMode (knapp, INGÅNG); digitalWrite (knapp, HÖG); Serial.begin (9600); }
Här i den här koden läser vi värdena från den analoga stiftet A0 och A1 och skriver ut seriellt.
int xValue = analogRead (joyX); int yValue = analogRead (joyY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
Villkoren för att tända och släcka lysdioder enligt styrspakens rörelse definieras i koden nedan. Här tar vi bara analoga spänningsvärden vid stift A0 och A1 i Arduino. Dessa analoga värden kommer att ändras när vi flyttar joysticken och lysdioden lyser enligt joystickens rörelse.
Detta villkor är för rörelse av joystickaxeln i -Y-riktning
om (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } annat {digitalWrite (10, LOW);}
Detta villkor gäller för styrning av joystickaxeln i -X-riktning
om (xValue <= 10 && yValue> = 500) {digitalWrite (11, HIGH); } annat {digitalWrite (11, LOW);}
Detta villkor är för rörelse av joystickaxeln i + X-axelriktning
if (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } annat {digitalWrite (9, LOW);}
Detta villkor är för rörelse av joystickaxeln i + Y-axelns riktning
om (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } annat {digitalWrite (8, LOW);}
När vi flyttar joystickaxeln diagonalt kommer en position när det analoga värdet på X och Y kommer att vara 1023 respektive 1023, både Pin 9 och Pin 8 LED kommer att lysa. Eftersom den uppfyller lysdioden. Så för att avlägsna denna felaktighet har vi gett ett villkor att om värdet på (X, Y) är (1023, 1023) så förblir båda lysdioderna i OFF-tillstånd
om (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, LOW); }
Nedanstående tillstånd används för att styra den lysdiod som är ansluten till tryckknappsbrytaren. När vi trycker på joysticksbrytaren tänds lysdioden och låses tills knappen släpps. Det är valfritt att använda tryckknappsknappen på joystickmodulen.
if (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, HÖG); } annat {digitalWrite (7, LOW);}
Kontrollerar lysdioder med joystick med Arduino
Efter att ha laddat upp koden till Arduino och anslutit komponenterna enligt kretsschemat kan vi nu styra lysdioderna med joystick. Vi kan slå på de fyra lysdioderna i varje riktning enligt joystickaxelns rörelse. Joystick har två potentiometer inuti, en är för X-axelrörelse och en annan för Y-axelrörelse. Varje potentiometer får 5v från Arduino. Så när vi flyttar joysticken kommer spänningsvärdet att ändras och det analoga värdet vid analoga stift A0 och A1 kommer också att ändras.
Så från Arduino läser vi det analoga värdet för X- och Y-axeln och slår på LED-lamporna enligt joystickens axelrörelse. En tryckknappsbrytare på joystickmodulen används för att styra den enda lysdioden i kretsen som visas i videon nedan.