Koodka Arduino iyo Fiidiyowga: Joystick-ka Laba-Dhidib
Cashiggan, waxaan ku baran doonnaa sida loo isticmaalo joystick-ka laba-dhidibeedka ah ee XY ee Arduino. Joystick-kan waxaa loo isticmaali karaa sidii kontorool ciyaar ama xakamaynta gacmaha robotic-ka, iyo codsiyo kale oo badan. Diidmada koowaad waxay noqon doontaa ogaanshaha booska joystick-ka iyo xaaladda badhanka riixaya, taas oo lagu arki karo kormeerka serial-ka.

Inta lagu guda jiro casharrada, waxaan hirgelin doonnaa barnaamij fudud oo akhriya boosaska X iyo Y ee joystick-ka oo ku muujiya kormeerka serial-ka ee Arduino. Marka joystick-ka la riixo, xaaladda badhanka sidoo kale waa la ogaan doonaa. Faahfaahin dheeraad ah oo ku saabsan koodka, hubi inaad daawato fiidiyowga waqtiyada lagu qeexay (fiidiyowga 00:00).
Qalabka La Sharaxay
Qaybaha ugu muhiimsan ee mashruucan waxaa ka mid ah module-ka joystick-ka laba-dhidibeedka ah iyo looxa Arduino. Module-ka joystick-ku wuxuu ka kooban yahay laba resistors oo doorsooma, mid X-dhidibka iyo mid Y-dhidibka, kuwaas oo bixiya qiimayaal analog ah oo ku salaysan booska joystick-ka. Badhanka riixaya ee joystick-ka waxaa loo isticmaalaa in lagu ogaado marka la riixo.
Markaad dhaqaajiso joystick-ka, potentiometers-ku waxay beddelaan iska caabbintooda, taas oo loo turjumay qiimayaal u dhexeeya 0 iyo 1023. Tani waxay noo ogolaaneysaa inaan si sax ah u go'aamino booska joystick-ka. Badhanka riixaya wuxuu ku xiran yahay pin-ka gelinta dijitaalka ah ee Arduino, taas oo noo ogolaaneysa inaan akhrino xaaladdiisa iyada oo aan loo baahnayn resistor dibadeed iyadoo la adeegsanayo sifada resistor-ka kor-u-jiidista ee gudaha.
Faahfaahinta Xogta
| Soo-saare | Guud |
|---|---|
| Nambarka qaybta | Module-ka Joystick-ka Laba-Dhidibeedka |
| Danabka Logic/IO | 5 V |
| Danabka sahayda | 5 V |
| Kala duwanaanshaha danabka soo-saarka | 0 - 5 V |
| Xallinta | 10-bit (0-1023) analog |
| Nooca badhanka | Riix-badh |
| Baakad | Module caadi ah |
- Hubi sahayda danab ee habboon (5 V) ee module-ka joystick-ka.
- Ku xir soo-saarka X iyo Y ee joystick-ka ee pin-yada analog A0 iyo A1, siday u kala horreeyaan.
- Isticmaal pin-ka dijitaalka ah ee 6 ee badhanka joystick-ka.
- Isticmaal qaabka resistor-ka kor-u-jiidista ee pin-ka badhanka.
- Kormeer qiimayaasha soo-saarka si loo hubiyo inay u dhexeeyaan 0 ilaa 1023.
Tilmaamaha Xiritaanka


Si aad ugu xirto joystick-ka laba-dhidibeedka ah ee Arduino, bilaab adigoo ku xira pin-ka dhulka ee joystick-ka ee raylka dhulka ee looxa breadboard-ka. Marka xigta, ku xir pin-ka 5V ee joystick-ka ee raylka togan ee breadboard-ka. Labada pin ee doorsooma ee joystick-ka, oo lagu calaamadeeyay X iyo Y, waa in lagu xiraa pin-yada analog A0 iyo A1 ee Arduino, siday u kala horreeyaan.
Badhanka riixaya ee joystick-ka, ku xir pin-ka dijitaalka ah ee 6 ee Arduino. Xiritaankan wuxuu adeegsadaa sifada resistor-ka kor-u-jiidista ee gudaha, marka uma baahnid resistor dibadeed. Ugu dambeyntii, haddii aad rabto inaad kormeerdo xaaladda badhanka LED-ga, ku xir lugta dheer ee LED-ga ee pin-ka dijitaalka ah ee 13 iyo lugta gaaban iyada oo loo marayo resistor 680-ohm ah oo ku xiran dhulka.
Tusaalooyinka Koodka & Sharaxaadda
Koodka Arduino, waxaan ku qeexnaa pin-ka badhanka waxaanan caddaynay cabbirrada shaashadda si loo sawiro qiimayaasha joystick-ka. Hawsha setup waxay bilaabaysaa isgaarsiinta serial-ka waxayna dejisaa qaabka pin-ka badhanka.
void setup() {
Serial.begin(9600); // bilaab isgaarsiinta serial-ka
pinMode(sw, INPUT_PULLUP); // dejinta pin-ka sw sida gelin
pinMode(13, OUTPUT); // pin-ka LED-ga
}
Hawsha loop, waxaan akhrinnaa qiimayaasha analog ee boosaska X iyo Y waxaanan u sawirnaa cabbirrada shaashadda ee la qeexay. Xaaladda badhanka sidoo kale waa la akhriyaa waxaana lagu daabacaa kormeerka serial-ka.
void loop() {
int x = analogRead(A0); // akhri qiimaha analog ee X
int y = analogRead(A1); // akhri qiimaha analog ee Y
int sStat = digitalRead(sw); // akhri xaaladda badhanka
// Daabac qiimayaasha kormeerka serial-ka
Serial.print("X: ");
Serial.print(xPos);
Serial.print(" Y: ");
Serial.println(yPos);
}
Ugu dambeyntii, koodku wuxuu hubinayaa haddii badhanka la riixo, isagoo shidiya ama damiya LED-ga iyadoo ku xiran xaaladda badhanka. Tani waxay bixisaa jawaab celin muuqaal ah marka badhanka joystick-ka la hawlgeliyo.
if(sStat == LOW) {
Serial.println("Badhanka la riixay");
digitalWrite(13, HIGH); // Shiid LED-ga
} else {
digitalWrite(13, LOW); // Dami LED-ga
}
Si aad u aragto sida qiimayaasha joystick-ka ay u beddelaan waqtiga dhabta ah, soo geli koodka Arduino-gaaga oo fur kormeerka serial-ka. Qiimayaashu waxay cusboonaysiin doonaan nus ilbiriqsi kasta, iyagoo muujinaya boosaska X iyo Y ee hadda jira iyo xaaladda badhanka (fiidiyowga 01:30).
Muuujin / Waxa Laga Filan Karo
Markaad dhaqaajiso joystick-ka, qiimayaasha X iyo Y waa inay si habboon u beddelaan, iyagoo u dhexeeya 0 ilaa 1023. Haddii aad riixdo badhanka joystick-ka, LED-ka ku xiran pin-ka 13 wuu iftiimin doonaa, taas oo muujinaysa in badhanka uu shaqeeyo. Haddii joystick-ku dhexda ku yaallo, waxaad arki doontaa qiimayaal ku dhow 512 labada dhidib, iyadoo ku xiran habaynta joystick-ka.
Waqtiyada Fiidiyowga
- 00:00 - Hordhaca joystick-ka laba-dhidibeedka ah
- 01:30 - Sharaxaadda koodka iyo shaqadiisa
- 02:45 - Tilmaamaha xiritaanka
- 03:15 - Soo-saarka la filanayo iyo tijaabinta
/*
* 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);
}
Waad u baahan tahay
-
AmaazonBuy XY joystick from Amazonamzn.to
Kheyraadka & Tixraacyada
Wali wax kaydsan ah oo weli ma jiro.
Faylasha📁
Fayl la'aan.