- Potrebný materiál
- Schéma zapojenia
- Modul joysticku
- Kód a vysvetlenie
- Ovládanie LED pomocou joysticku s Arduino
Prvá vec, ktorá nás napadne pri počúvaní slova Joystick, je herný ovládač. Áno, je to úplne to isté a dá sa použiť na herné účely. Okrem hier má mnoho ďalších aplikácií v elektronike pre domácich majstrov. Tento joystick nie je nič iné ako kombinácia dvoch potenciometrov pre rovinu X a Y. Číta napätie cez potenciometer a dáva analógovú hodnotu Arduinu a analógová hodnota sa mení, keď pohybujeme hriadeľom joysticku (čo je jednoducho ukazovateľ potenciometra).
V tomto obvode prepojujeme joystick a Arduino jednoduchým ovládaním štyroch LED diód podľa pohybu joysticku. Umiestnili sme 4 LED diódy tak, aby predstavovali smer pohybu hriadeľa joysticku. Tento joystick má tiež tlačidlo, ktoré je možné použiť na rôzne iné účely alebo ho môžete nechať nečinný. K spínaču na joysticku je tiež pripevnená jedna LED dióda, pretože stlačené tlačidlo na joysticku sa rozsvieti.
Potrebný materiál
- Arduino UNO
- Modul joysticku
- LED-5
- Rezistor: 100ohm-3
- Pripojovacie vodiče
- Nepál
Schéma zapojenia
Modul joysticku
Joysticky sú k dispozícii v rôznych tvaroch a veľkostiach. Typický modul Joystick je zobrazený na obrázku nižšie. Tento modul joysticku zvyčajne poskytuje analógové výstupy a výstupné napätia poskytované týmto modulom sa neustále menia podľa smeru, ktorým ho pohybujeme. A smer pohybu môžeme získať interpretáciou týchto zmien napätia pomocou nejakého mikrokontroléra. Predtým sme prepojili joystick s AVR a Raspberry Pi.
Tento modul joysticku má dve osi, ako vidíte. Sú to os X a Y. Každá os zariadenia JOYSTICK je pripevnená k potenciometru alebo banke. Stredy týchto hrncov sú vytlačené ako Rx a Ry. Rx a Ry sú teda variabilné body k týmto bankom. Keď je joystick v pohotovostnom režime, Rx a Ry fungujú ako rozdeľovač napätia.
Keď sa joystick pohybuje pozdĺž vodorovnej osi, mení sa napätie na kolíku Rx. Podobne, keď sa pohybuje pozdĺž vertikálnej osi, mení sa napätie na kolíku Ry. Takže máme štyri smery navigačného tlačidla na dvoch ADC výstupy. Keď sa páčkou pohnete, napätie na každom kolíku sa zvýši alebo zníži v závislosti od smeru.
Tu spájame tento modul Joystick s Arduino UNO, ktorý je dodávaný so zabudovaným mechanizmom ADC (Analog to Digital Converter), ako je znázornené na videu na konci. Viac informácií o používaní ADC spoločnosti Arduino sa dozviete tu.
Kód a vysvetlenie
Na konci je uvedený kompletný Arduino kód.
V nasledujúcom kóde sme definovali osi X a Y modulu joysticku pre analógový pin A0, respektíve A1.
#define joyX A0 #define joyY A1
Teraz v nasledujúcom kóde inicializujeme PIN 2 Arduina pre Switch (tlačidlo) modulu Joystick a hodnota buttonstate a buttonstate1 bude na začiatku 0.
tlačidlo int = 2; int buttonState = 0; int buttonState1 = 0;
V nižšie uvedenom kóde nastavujeme prenosovú rýchlosť na 9600 a Pin 7 sme definovali ako výstupný a tlačidlový ako vstupný. Spočiatku zostane kolík tlačidla vysoký, kým nestlačíte prepínač.
void setup () {pinMode (7, OUTPUT); pinMode (tlačidlo, VSTUP); digitalWrite (tlačidlo, VYSOKÉ); Serial.begin (9600); }
Tu v tomto kóde čítame hodnoty z analógových pinov A0 a A1 a tlačíme sériovo.
int xValue = analogRead (joyX); int yValue = analogRead (joyY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
Podmienky zapínania a vypínania LED diód podľa pohybu hriadeľa joysticku sú definované v nasledujúcom kóde. Tu berieme iba analógové hodnoty napätia na pinoch A0 a A1 Arduina. Tieto analógové hodnoty sa budú meniť pri pohybe joystickom a LED dióda bude svietiť podľa pohybu joysticku.
Táto podmienka je pre pohyb hriadeľa joysticku v smere osi Y.
if (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } else {digitalWrite (10, LOW);}
Táto podmienka je pre pohyb hriadeľa joysticku v smere osi X.
if (xValue <= 10 && yValue> = 500) {digitalWrite (11, HIGH); } else {digitalWrite (11, LOW);}
Táto podmienka je pre pohyb hriadeľa joysticku v smere + os X.
if (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } else {digitalWrite (9, LOW);}
Táto podmienka je pre pohyb hriadeľa joysticku v smere + os Y.
if (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } else {digitalWrite (8, LOW);}
Keď posúvame hriadeľ joysticku diagonálne, potom dôjde k jednej polohe, keď bude analógová hodnota X a Y 1023, respektíve 1023, LED 9 a 8 budú svietiť. Pretože vyhovuje stavu LED. Takže na odstránenie tohto nesúladu sme dali podmienku, že ak je hodnota (X, Y) (1023, 1023), potom obidve LED zostanú v stave OFF
if (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, LOW); }
Nasledujúca podmienka sa používa na ovládanie LED pripojenej k tlačidlovému spínaču. Keď stlačíme spínač na joysticku, LED sa rozsvieti a zablokuje, kým sa tlačidlo neuvoľní. Je voliteľné použiť tlačidlový spínač na module Joystick.
if (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, HIGH); } else {digitalWrite (7, LOW);}
Ovládanie LED pomocou joysticku s Arduino
Po nahraní kódu do Arduina a pripojení komponentov podľa schémy zapojenia môžeme teraz LED ovládať pomocou joysticku. Môžeme zapnúť štyri LED diódy v každom smere podľa pohybu hriadeľa joysticku. Joystick má v sebe dva potenciometre, jeden je na pohyb v osi X a druhý na pohyb v osi Y. Každý potenciometer získava od Arduina 5V. Takže keď pohybujeme joystickom, zmení sa hodnota napätia a zmení sa aj analógová hodnota na analógových pinoch A0 a A1.
Takže z Arduina čítame analógovú hodnotu pre os X a Y a zapíname LED diódy podľa pohybu osi joysticku. Na ovládanie jednej LED v obvode sa používa tlačidlový spínač na module Joystick, ako je znázornené na videu nižšie.