- Potřebný materiál
- Kruhový diagram
- Modul joysticku
- Kód a vysvětlení
- Ovládání LED pomocí joysticku s Arduino
První věc, která nás napadne při poslechu slova Joystick, je herní ovladač. Ano, je to úplně stejné a lze jej použít pro herní účely. Kromě her má mnoho dalších aplikací v kutilské elektronice. Tento joystick není nic jiného než kombinace dvou potenciometrů pro rovinu X a Y. Čte napětí přes potenciometr a dává analogovou hodnotu Arduinu a analogová hodnota se mění při pohybu hřídele joysticku (což je jednoduše ukazatel potenciometru).
V tomto obvodu propojujeme Joystick s Arduino jednoduše ovládáním čtyř LED podle pohybu Joysticku. Umístili jsme 4 LED tak, aby to představovalo směr pohybu hřídele joysticku. Tento joystick má také tlačítko, které lze použít k různým jiným účelům nebo jej lze ponechat nečinné. K přepínači joysticku je také připojena jedna LED, když stisknete tlačítko joysticku, jedna LED se rozsvítí.
Potřebný materiál
- Arduino UNO
- Modul joysticku
- LED diody-5
- Rezistor: 100ohm-3
- Připojovací vodiče
- Nepájivá deska
Kruhový diagram
Modul joysticku
Joysticky jsou k dispozici v různých tvarech a velikostech. Typický modul Joystick je zobrazen na obrázku níže. Tento modul joysticku obvykle poskytuje analogové výstupy a výstupní napětí poskytovaná tímto modulem se neustále mění podle směru, kterým jej pohybujeme. A můžeme získat směr pohybu interpretací těchto změn napětí pomocí nějakého mikrokontroléru. Dříve jsme propojovali Joystick s AVR a Raspberry Pi.
Tento modul joysticku má dvě osy, jak vidíte. Jsou to osa X a osa Y. Každá osa JOYSTICKU je namontována na potenciometr nebo hrnec. Středy těchto baněk jsou vyhnány jako Rx a Ry. Rx a Ry jsou tedy variabilní body k těmto bankům. Když je joystick v pohotovostním režimu, fungují Rx a Ry jako dělič napětí.
Když se joystick pohybuje podél vodorovné osy, mění se napětí na kolíku Rx. Podobně, když se pohybuje podél svislé osy, mění se napětí na Ry pin. Takže máme čtyři směry Joysticku na dvou výstupech ADC. Když se hůl pohybuje, napětí na každém čepu klesá nebo klesá v závislosti na směru.
Zde propojujeme tento modul Joystick s Arduino UNO, který je dodáván s vestavěným mechanismem ADC (Analog to Digital Converter), jak je znázorněno na videu na konci. Další informace o používání ADC společnosti Arduino naleznete zde.
Kód a vysvětlení
Na konci je uveden kompletní Arduino kód.
V níže uvedeném kódu jsme definovali osu X a Y modulu Joystick pro analogový pin A0, respektive A1.
#define joyX A0 #define joyY A1
Nyní v níže uvedeném kódu inicializujeme PIN 2 Arduina pro Switch (tlačítko) modulu Joystick a hodnota buttonstate a buttonstate1 bude na začátku 0.
tlačítko int = 2; int buttonState = 0; int buttonState1 = 0;
V níže uvedeném kódu nastavujeme přenosovou rychlost na 9600 a definujeme Pin 7 jako výstupní pin a tlačítkový pin jako vstupní Pin. Zpočátku zůstane kolík tlačítka vysoký, dokud přepínač nestiskne.
void setup () {pinMode (7, OUTPUT); pinMode (tlačítko, VSTUP); digitalWrite (tlačítko, VYSOKÉ); Serial.begin (9600); }
Zde v tomto kódu čteme hodnoty z analogového pinu A0 a A1 a tiskneme sériově.
int xValue = analogRead (joyX); int yValue = analogRead (joyY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
Podmínky pro zapnutí a vypnutí LED podle pohybu hřídele joysticku jsou definovány v níže uvedeném kódu. Zde bereme pouze analogové hodnoty napětí na pinech A0 a A1 Arduina. Tyto analogové hodnoty se budou měnit při pohybu joysticku a LED bude svítit podle pohybu joysticku.
Tato podmínka je pro pohyb hřídele joysticku ve směru osy -Y
if (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } else {digitalWrite (10, LOW);}
Tato podmínka je pro pohyb hřídele joysticku ve směru osy X.
if (xValue <= 10 && yValue> = 500) {digitalWrite (11, HIGH); } else {digitalWrite (11, LOW);}
Tato podmínka je pro pohyb hřídele joysticku ve směru + osy X.
if (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } else {digitalWrite (9, LOW);}
Tato podmínka je pro pohyb hřídele joysticku ve směru osy + Y.
if (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } else {digitalWrite (8, LOW);}
Když pohybujeme hřídelem joysticku diagonálně, pak přijde jedna poloha, když analogová hodnota X a Y bude 1023, respektive 1023, bude svítit jak LED Pin 9, tak Pin 8. Protože splňuje podmínky LED. Abychom odstranili tento nesoulad, dali jsme podmínku, že pokud je hodnota (X, Y) (1023, 1023), pak obě LED zůstanou ve stavu VYPNUTO
if (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, LOW); }
Níže uvedená podmínka se používá k ovládání LED připojené k tlačítkovému spínači. Když stiskneme spínač Joystick, LED se rozsvítí a zablokuje, dokud se tlačítko neuvolní. Volitelně lze použít tlačítkový spínač na modulu Joystick.
if (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, HIGH); } else {digitalWrite (7, LOW);}
Ovládání LED pomocí joysticku s Arduino
Po nahrání kódu do Arduina a připojení komponentů podle schématu zapojení nyní můžeme ovládat LED pomocí joysticku. Můžeme zapnout čtyři LED v každém směru podle pohybu hřídele Joysticku. Joystick má uvnitř dva potenciometry, jeden pro pohyb v ose X a druhý pro pohyb v ose Y. Každý potenciometr získává od Arduina 5V. Pohybem joysticku se tedy změní hodnota napětí a změní se také analogová hodnota na analogových pinech A0 a A1.
Takže z Arduina čteme analogovou hodnotu pro osu X a Y a zapínáme LED podle pohybu osy joysticku. Tlačítkový spínač na modulu Joystick se používá k ovládání jednotlivých LED v obvodu, jak je znázorněno na videu níže.