- Reikalinga medžiaga
- Grandinės schema
- Vairasvirtės modulis
- Kodas ir paaiškinimas
- Šviesos diodų valdymas naudojant „Joystick“ su „Arduino“
Pirmas dalykas, kuris ateina į mūsų mintis klausantis žodžio „ Joystick“, yra žaidimo valdiklis. Taip, tai visiškai tas pats ir gali būti naudojamas žaidimams. Be žaidimų, jis turi daugybę kitų „pasidaryk pats“ elektronikos programų. Ši vairasvirtė yra ne kas kita, o dviejų potenciometrų derinys atitinkamai X ir Y plokštumai. Jis nuskaito įtampą per potenciometrą ir suteikia „Arduino“ analoginę vertę, o analoginė vertė keičiasi, kai mes judiname vairasvirtės veleną (kuris paprasčiausiai yra potenciometro rodyklė).
Šioje grandinėje mes susiejame vairasvirtę su „Arduino“ paprasčiausiai valdydami keturis šviesos diodus pagal vairasvirtės judėjimą. Mes įdėjome 4 šviesos diodus taip, kad jie atspindėtų vairasvirtės veleno judėjimo kryptį. Ši vairasvirtė taip pat turi mygtuką, kurį galima naudoti įvairiems kitiems tikslams arba palikti nenaudojamą. Prie vairasvirtės jungiklio taip pat pritvirtintas vienas šviesos diodas, nes vairasvirtės mygtukas paspaudė tą vieną šviesos diodą.
Reikalinga medžiaga
- „Arduino UNO“
- Vairasvirtės modulis
- Šviesos diodai-5
- Rezistorius: 100ohm-3
- Jungiamieji laidai
- Bandomoji Lenta
Grandinės schema
Vairasvirtės modulis
Vairas yra įvairių formų ir dydžių. Tipinis „ Joystick“ modulis parodytas paveikslėlyje žemiau. Šis vairasvirtės modulis paprastai teikia analoginius išėjimus, o šio modulio teikiamos išėjimo įtampos nuolat keičiasi atsižvelgiant į kryptį, kuria mes jį judame. Ir mes galime gauti judėjimo kryptį interpretuodami šiuos įtampos pokyčius naudodami kokį nors mikrovaldiklį. Anksčiau mes susiejome „Joystick“ su AVR ir „Raspberry Pi“.
Šis vairasvirtės modulis turi dvi ašis, kaip matote. Jie yra X ir Y ašys. Kiekviena JOYSTICK ašis pritvirtinta prie potenciometro arba puodo. Šių puodų vidurio taškai išstumiami kaip Rx ir Ry. Taigi Rx ir Ry yra kintantys šių puodų taškai. Kai vairasvirtė yra budėjimo režime, Rx ir Ry veikia kaip įtampos daliklis.
Kai vairasvirtė perkeliama išilgai horizontalios ašies, Rx kaiščio įtampa pasikeičia. Panašiai, kai ji juda išilgai vertikalios ašies, Ry kaičio įtampa keičiasi. Taigi mes turime keturias vairasvirtės kryptis dviem ADC išėjimais. Judinant lazdą, kiekvieno kaiščio įtampa padidėja arba sumažėja, priklausomai nuo krypties.
Čia mes sujungiame šį „Joystick“ modulį su „Arduino UNO“, kuriame yra įmontuotas ADC („Analog to Digital Converter“) mechanizmas, kaip parodyta vaizdo įrašo pabaigoje. Sužinokite daugiau apie „Arduino“ ADC naudojimą čia.
Kodas ir paaiškinimas
Pabaigoje paminėtas pilnas „Arduino“ kodas.
Žemiau esančiame kode mes nustatėme „Joystick“ modulio X ir Y ašis atitinkamai analoginiams kaiščiams A0 ir A1.
# apibrėžti džiaugsmąX A0 # apibrėžti džiaugsmąY A1
Dabar, žemiau esančiame kode, mes inicijuojame „Arduino“ PIN 2 kodą jungikliui (mygtukui) valdyti vairasvirtę ir mygtuko būsenos ir mygtuko 1 reikšmė pradžioje bus 0.
int mygtukas = 2; int mygtukasValstis = 0; int mygtukasValstis1 = 0;
Žemiau esančiame kode mes nustatome perdavimo spartą iki 9600 ir apibrėžėme 7 kaištį kaip išvesties kaištį ir mygtuko kaištį kaip įvesties kaištį. Iš pradžių mygtuko kaištis išliks aukštas, kol paspaus jungiklis.
negaliojanti sąranka () {pinMode (7, OUTPUT); pinMode (mygtukas, INPUT); „digitalWrite“ (mygtukas, AUKŠTAS); Serijos pradžia (9600); }
Čia šiame kode mes skaitome vertes iš analoginio kaiščio A0 ir A1 ir spausdiname nuosekliai.
int xValue = analogRead (džiaugsmasX); int yValue = analogRead (džiaugsmasY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
Sąlygos įjungti ir išjungti šviesos diodą pagal vairasvirtės veleno judėjimą yra apibrėžtos žemiau esančiame kode. Čia mes tiesiog imame analogines įtampos vertes „Arduino“ kaiščiuose A0 ir A1. Šios analoginės vertės pasikeis, kai mes judame vairasvirtę ir šviesos diodas šviečia priklausomai nuo vairalazdės judėjimo.
Ši sąlyga taikoma vairasvirtės veleno judėjimui -Y ašies kryptimi
if (xValue> = 0 &&YValue <= 10) {digitalWrite (10, HIGH); } else {digitalWrite (10, LOW);}
Ši sąlyga taikoma vairasvirtės veleno judėjimui -X ašies kryptimi
if (xValue <= 10 &&YValue> = 500) {digitalWrite (11, HIGH); } else {digitalWrite (11, LOW);}
Ši sąlyga taikoma vairasvirtės veleno judėjimui + X ašies kryptimi
if (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } else {digitalWrite (9, LOW);}
Ši sąlyga taikoma vairasvirtės veleno judėjimui + Y ašies kryptimi
if (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } else {digitalWrite (8, LOW);}
Kai vairasvirtės veleną perkelsime įstrižai, tada bus viena padėtis, kai analoginė X ir Y vertė bus atitinkamai 1023 ir 1023, tiek 9, tiek PIN 8 šviesos diodai šviečia. Nes jis tenkina šviesos diodo būklę. Taigi, kad pašalintume tą neatitikimą, mes suteikėme sąlygą, kad jei (X, Y) reikšmė yra (1023, 1023), abu LED liks išjungti
if (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); „digitalWrite“ (8, LOW); }
Ši sąlyga naudojama valdant šviesos diodą, prijungtą prie mygtuko jungiklio. Kai paspausime vairasvirtės jungiklį, šviesos diodas įsijungs ir užsifiksuos, kol atleis mygtuką. Pasirinktinai naudoti valdymo mygtuko jungiklį valdymo skydelyje.
if (buttonState == LOW) {Serial.println ("jungiklis = didelis"); „digitalWrite“ (7, HIGH); } else {digitalWrite (7, LOW);}
Šviesos diodų valdymas naudojant „Joystick“ su „Arduino“
Įkėlę kodą į „Arduino“ ir prijungę komponentus pagal grandinės schemą, dabar galime valdyti šviesos diodus naudodami vairasvirtę. Mes galime įjungti keturis šviesos diodus kiekviena kryptimi pagal vairasvirtės veleno judėjimą. Vairasvirtėje yra du potenciometrai, vienas skirtas X ašiai, kitas - Y ašiai. Kiekvienas potenciometras gauna 5 V iš „Arduino“. Taigi, kai mes judame vairasvirtę, įtampos vertė pasikeis, o analoginė vertė analoginiuose kaiščiuose A0 ir A1 taip pat pasikeis.
Taigi, iš „Arduino“, mes nuskaitome analoginę X ir Y ašių vertę ir įjungiame šviesos diodus pagal vairasvirtės ašies judėjimą. „Joystick“ modulio mygtuko jungiklis naudojamas valdyti vieną grandinės šviesos diodą, kaip parodyta toliau pateiktame vaizdo įraše.