- Nepieciešams materiāls
- Ķēdes shēma
- Kursorsviras modulis
- Kods un skaidrojums
- Gaismas diožu vadība, izmantojot kursorsviru ar Arduino
Pirmais, kas mums ienāk prātā, klausoties vārdu Joystick, ir spēles kontrolieris. Jā, tas ir tieši tas pats, un to var izmantot spēļu vajadzībām. Papildus spēlēm tam ir daudz citu lietojumu DIY elektronikā. Šī kursorsvira ir nekas cits kā divu potenciometru kombinācija attiecīgi X un Y plaknei. Tas nolasa spriegumu caur potenciometru un piešķir analogo vērtību Arduino, un analogā vērtība mainās, kad mēs pārvietojam kursorsviras vārpstu (kas vienkārši ir potenciometra rādītājs).
Šajā shēmā mēs sasaistāmies ar kursorsviru ar Arduino, vienkārši kontrolējot četrus gaismas diodes atbilstoši kursorsviras kustībai. Mēs esam izvietojuši 4 gaismas diodes tā, lai tie atspoguļotu kursorsviras vārpstas kustības virzienu. Šai kursorsvirai ir arī spiedpoga, kuru var izmantot citiem mērķiem, vai arī to var atstāt dīkstāvē. Vienu gaismas diode ir pievienota arī kursorsviras slēdzim, jo kursorsviras poga nospieda šo vienīgo gaismas diode.
Nepieciešams materiāls
- Arduino UNO
- Kursorsviras modulis
- LED-5
- Rezistors: 100ohm-3
- Savienojošie vadi
- Maizes dēlis
Ķēdes shēma
Kursorsviras modulis
Kursorsviras ir pieejamas dažādās formās un izmēros. Tipisks kursorsviras modulis parādīts zemāk redzamajā attēlā. Šis kursorsviras modulis parasti nodrošina analogās izejas, un šī moduļa nodrošinātie izejas spriegumi pastāvīgi mainās atkarībā no virziena, kurā mēs to pārvietojam. Un mēs varam iegūt kustības virzienu, interpretējot šīs sprieguma izmaiņas, izmantojot kādu mikrokontrolleru. Iepriekš mēs sasaistījāmies kursorsviru ar AVR un Raspberry Pi.
Šim kursorsviras modulim ir divas asis, kā redzat. Tās ir X ass un Y ass. Katra JOYSTICK ass ir piestiprināta pie potenciometra vai katla. Šo podu viduspunkti tiek izdzīti kā Rx un Ry. Tātad Rx un Ry ir mainīgi punkti šiem podiem. Kad kursorsvira ir gaidīšanas režīmā, Rx un Ry darbojas kā sprieguma dalītājs.
Kad kursorsviru pārvieto pa horizontālo asi, spriegums pie Rx tapas mainās. Līdzīgi, kad to pārvieto pa vertikālo asi, mainās spriegums Ry tapā. Tātad mums ir četri kursorsviras virzieni uz diviem ADC izvadiem. Kad nūja tiek pārvietota, katras tapas spriegums ir augsts vai zems atkarībā no virziena.
Šeit mēs savienojam šo kursorsviras moduli ar Arduino UNO, kas aprīkots ar iebūvētu ADC (Analog to Digital Converter) mehānismu, kā parādīts videoklipa beigās. Uzziniet vairāk par Arduino ADC izmantošanu šeit.
Kods un skaidrojums
Pilnīgs Arduino kods ir minēts beigās.
Zemāk esošajā kodā mēs esam definējuši kursorsviras moduļa X un Y asi analogajiem tapām A0 un A1.
#define prieksX A0 #define prieksY A1
Tagad zemāk esošajā kodā mēs inicializējam Arduino PIN 2 vadības sviras moduļa slēdzim (spiedpogai), un pogas stāvokļa un pogas 1 vērtība sākumā būs 0.
int poga = 2; int buttonState = 0; int buttonState1 = 0;
Zemāk esošajā kodā mēs iestatām datu pārraides ātrumu līdz 9600 un definējam Pin 7 kā izejas pin un pogas pin kā ievades Pin. Sākotnēji pogas tapa būs augsta, līdz slēdzis nospiedīs.
void setup () {pinMode (7, OUTPUT); pinMode (poga, INPUT); digitalWrite (poga, AUGSTA); Sērijas sākums (9600); }
Šajā kodā mēs nolasām vērtības no analogās tapas A0 un A1 un drukājam sērijveidā.
int xValue = analogRead (prieksX); int yValue = analogRead (prieksY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
Nosacījumi LED ieslēgšanai un izslēgšanai atbilstoši kursorsviras vārpstas kustībai ir noteikti zemāk esošajā kodā. Šeit mēs vienkārši ņemam analogās sprieguma vērtības pie Arduino tapām A0 un A1. Šīs analogās vērtības mainīsies, pārvietojot kursorsviru, un gaismas diode mirgos atbilstoši kursorsviras kustībai.
Šis nosacījums paredzēts kursorsviras vārpstas kustībai -Y ass virzienā
if (xValue> = 0 &&VVērtība <= 10) {digitalWrite (10, HIGH); } cits {digitalWrite (10, LOW);}
Šis nosacījums ir paredzēts kursorsviras vārpstas kustībai -X ass virzienā
if (xValue <= 10 &&VVērtība> = 500) {digitalWrite (11, HIGH); } cits {digitalWrite (11, LOW);}
Šis nosacījums ir paredzēts kursorsviras vārpstas kustībai + X ass virzienā
if (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } cits {digitalWrite (9, LOW);}
Šis nosacījums ir paredzēts kursorsviras vārpstas kustībai + Y ass virzienā
if (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } cits {digitalWrite (8, LOW);}
Kad kursorsviras vārpstu pārvietojam pa diagonāli, viena pozīcija nāk, kad X un Y analogā vērtība būs attiecīgi 1023 un 1023, mirgos gan 9., gan 8. tapas gaismas diode. Tā kā tas atbilst gaismas diodes stāvoklim. Tātad, lai novērstu šo neatbilstību, mēs esam izvirzījuši nosacījumu, ka, ja (X, Y) vērtība ir (1023, 1023), tad abi LED paliek izslēgtā stāvoklī
if (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, LOW); }
Šis nosacījums tiek izmantots, lai darbinātu LED, kas savienots ar spiedpogas slēdzi. Nospiežot kursorsviras slēdzi, gaismas diode ieslēgsies un aizbīdīsies, līdz poga atbrīvojas. Tas ir obligāti izmantot vadības pogas pogas slēdzi kursorsviras modulī.
if (buttonState == LOW) {Serial.println ("Slēdzis = Augsts"); digitalWrite (7, HIGH); } cits {digitalWrite (7, LOW);}
Gaismas diožu vadība, izmantojot kursorsviru ar Arduino
Pēc koda augšupielādes Arduino un komponentu savienošanas atbilstoši shēmas shēmai, tagad mēs varam vadīt gaismas diodes ar kursorsviru. Mēs varam ieslēgt četrus gaismas diodes katrā virzienā atbilstoši kursorsviras vārpstas kustībai. Sviras iekšpusē ir divi potenciometri, viens ir paredzēts X ass kustībai, bet otrs - Y ass kustībai. Katrs potenciometrs saņem 5 V no Arduino. Tātad, pārvietojot kursorsviru, mainīsies sprieguma vērtība un mainīsies arī analogā vērtība pie analogajām tapām A0 un A1.
Tātad no Arduino mēs nolasām X un Y ass analogo vērtību un ieslēdzam gaismas diodes atbilstoši kursorsviras ass kustībai. Spiedpogas slēdzis uz vadības sviras moduļa tiek izmantots, lai kontrolētu ķēdes vienu LED, kā parādīts zemāk esošajā video.