Arduino kod i video: Dvostruko-osni džojstik
U ovom tutorijalu ćemo istražiti kako koristiti dvostruki XY joystick sa Arduinom. Ovaj joystick se može koristiti kao kontroler za igre ili za upravljanje robotskim rukama, između ostalih primjena. Glavni fokus će biti na detekciji pozicije joysticka i stanja njegovog push-button prekidača, što se može prikazati na serijskom monitoru.

Kroz tutorijal ćemo implementirati jednostavan program koji čita X i Y pozicije joysticka i prikazuje ih u Arduino serijskom monitoru. Kada se joystick pritisne, stanje prekidača će također biti detektovano. Za detaljno objašnjenje koda, obavezno pogledajte video na navedenim vremenskim oznakama (u videu na 00:00).
Objašnjenje hardvera
Glavne komponente za ovaj projekat uključuju modul dvostrukog joysticka i Arduino ploču. Modul joysticka se sastoji od dva varijabilna otpornika, jedan za X-osu i jedan za Y-osu, koji daju analogne vrijednosti na osnovu pozicije joysticka. Push-button prekidač na joysticku se koristi za detekciju kada je pritisnut.
Kada pomjerite joystick, potenciometri mijenjaju svoj otpor, što se prevodi u vrijednosti između 0 i 1023. To nam omogućava da precizno odredimo poziciju joysticka. Push-button prekidač je povezan na digitalni ulazni pin na Arduinu, što nam omogućava da čitamo njegovo stanje bez potrebe za vanjskim otpornikom koristeći internu pull-up otpornu funkciju.
Detalji iz datasheeta
| Proizvođač | Generički |
|---|---|
| Broj dijela | Modul dvostrukog joysticka |
| Logički/IO napon | 5 V |
| Napon napajanja | 5 V |
| Raspon izlaznog napona | 0 - 5 V |
| Rezolucija | 10-bitna (0-1023) analogna |
| Tip prekidača | Push-button |
| Pakovanje | Standardni modul |
- Osigurajte odgovarajuće napajanje (5 V) modulu joysticka.
- Spojite X i Y izlaze joysticka na analogne pinove A0 i A1, respektivno.
- Koristite digitalni pin 6 za prekidač joysticka.
- Koristite pull-up otpornu konfiguraciju za pin prekidača.
- Pratite izlazne vrijednosti kako biste osigurali da se kreću od 0 do 1023.
Upute za povezivanje


Da biste povezali dvostruki joystick na Arduino, počnite spajanjem ground pina joysticka na ground traku na vašoj breadboard ploči. Zatim spojite 5V pin joysticka na pozitivnu traku na breadboard ploči. Dva varijabilna pina na joysticku, označena kao X i Y, treba spojiti na analogne pinove A0 i A1 na Arduinu, respektivno.
Za push-button prekidač na joysticku, spojite ga na digitalni pin 6 na Arduinu. Ova veza koristi internu pull-up otpornu funkciju, tako da vam ne treba vanjski otpornik. Konačno, ako želite pratiti stanje prekidača pomoću LED diode, spojite dužu nogicu LED diode na digitalni pin 13, a kraću nogicu kroz otpornik od 680 oma na ground.
Primjeri koda i objašnjenje
U Arduino kodu definiramo pin za prekidač i specificiramo dimenzije ekrana za mapiranje vrijednosti joysticka. Setup funkcija inicijalizira serijsku komunikaciju i postavlja način rada pina prekidača.
void setup() {
Serial.begin(9600); // inicijalizacija serijske komunikacije
pinMode(sw, INPUT_PULLUP); // postavljanje pina sw kao ulaz
pinMode(13, OUTPUT); // LED pin
}
U loop funkciji čitamo analogne vrijednosti za X i Y pozicije i mapiramo ih na definirane dimenzije ekrana. Stanje prekidača se također čita i ispisuje na serijski monitor.
void loop() {
int x = analogRead(A0); // čitanje analogne vrijednosti za X
int y = analogRead(A1); // čitanje analogne vrijednosti za Y
int sStat = digitalRead(sw); // čitanje stanja prekidača
// Ispis vrijednosti na serijski monitor
Serial.print("X: ");
Serial.print(xPos);
Serial.print(" Y: ");
Serial.println(yPos);
}
Konačno, kod provjerava da li je prekidač pritisnut, uključujući ili isključujući LED diodu na osnovu stanja prekidača. Ovo pruža vizuelnu povratnu informaciju kada je dugme joysticka aktivirano.
if(sStat == LOW) {
Serial.println("Prekidač pritisnut");
digitalWrite(13, HIGH); // Uključi LED diodu
} else {
digitalWrite(13, LOW); // Isključi LED diodu
}
Da biste vidjeli kako se vrijednosti joysticka mijenjaju u realnom vremenu, prenesite kod na svoj Arduino i otvorite serijski monitor. Vrijednosti će se ažurirati svake pola sekunde, prikazujući trenutne X i Y pozicije zajedno sa stanjem prekidača (u videu na 01:30).
Demonstracija / Šta očekivati
Kada pomjerite joystick, X i Y vrijednosti bi se trebale mijenjati u skladu s tim, u rasponu od 0 do 1023. Ako pritisnete dugme joysticka, LED dioda spojena na pin 13 će zasvijetliti, što ukazuje da je prekidač aktivan. Ako je joystick centriran, trebali biste vidjeti vrijednosti oko 512 za obje ose, ovisno o kalibraciji joysticka.
Vremenske oznake videa
- 00:00 - Uvod u dvostruki joystick
- 01:30 - Objašnjenje koda i funkcionalnosti
- 02:45 - Upute za povezivanje
- 03:15 - Očekivani izlaz i testiranje
/*
* This is Arduino code to use a dual-axis XY joystick to read the value of the joystick position as X and Y, and
* also read the switch.
* Other Arduino library and videos: https://robojax.com
* Watch the video for this code to learn it fully.
* Watch the video here: https://youtu.be/6N8Iq353GM8
* This code is offered "as is" without any warranty.
* If you are sharing this code, you must keep this copyright note.
*/
/*
* Written for Robojax video on January 10, 2018
* by Ahmad Nejrabi, in Ajax, Ontario, Canada
* Copyright Robojax Inc.
*/
/*
* This is a dual-axis joystick sketch for Arduino.
* The position of the joystick is read and displayed on the serial monitor.
*/
#define sw 6
#define screenWidth 600
#define screenHeight 300
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
pinMode(sw,INPUT_PULLUP);// setting pin sw as input
pinMode(13,OUTPUT);
}
void loop() {
// Robojax Dual Axis joystick project
int x = analogRead(A0);// read analog value
int y = analogRead(A1);
int xPos = map(x, 0, 1023,0,screenWidth);
int yPos = map(y, 0, 1023,0,screenHeight);
int sStat = digitalRead(sw);//
// Robojax project
Serial.print("X: ");
Serial.print(xPos);
Serial.print(" Y: ");
Serial.println(yPos);// Robojax prints y value
if(sStat ==LOW){
Serial.println("Switch pressed");
digitalWrite(13,HIGH);// Turn LED ON
}else{
digitalWrite(13,LOW);// Turn LED OFF
}
delay(500);
}
Stvari koje bi vam mogle zatrebati
-
AmazonBuy XY joystick from Amazonamzn.to
Resursi i reference
Još nema resursa.
Datoteke📁
Nema dostupnih datoteka.