Search Code

Koyarwar ESP32 26/55 - Yin Amfani da Joystick tare da Arduino Daukar Mataki | SunFounder's ESP32 IoT kit

Koyarwar ESP32 26/55 - Yin Amfani da Joystick tare da Arduino Daukar Mataki | SunFounder's ESP32 IoT kit

A cikin wannan koyawa, za mu koyi yadda ake haɗa XY joystick da ESP32 microcontroller daga SunFounder, wanda zai ba mu damar gano matsayinsa da kuma ɗaukar mataki bisa ga shigar da shi. Za mu kuma haɗa buzzer wanda ke kunna lokacin da aka motsa joystick zuwa wani takamaiman matsayi. Wannan haɗin zai ba mu damar ƙirƙirar ayyuka masu mu'amala waɗanda ke amsa shigar da mai amfani a lokaci guda.

ESP32-26-xy-joystick-main

XY joystick yana ba da fitarwa biyu na analog da suka dace da matsayin X da Y da kuma maɓallin da za a iya danna shi don kunna wani aiki. Ta hanyar karanta ƙimar daga joystick, za mu iya sarrafa abubuwa daban-daban a cikin aikinmu, kamar kunna buzzer ko nuna ƙima akan allo. Don fahimtar tsarin gaba ɗaya, tabbatar da duba bidiyon don ƙarin fahimta (a cikin bidiyo a 00:00).

Kayan Aiki Da Aka Bayyana

Babban kayan aikin wannan aikin sun haɗa da ESP32 microcontroller, XY joystick, da buzzer. ESP32 wani allo ne mai amfani wanda ke goyan bayan Wi-Fi da Bluetooth, yana sa ya dace da ayyukan IoT. XY joystick ya ƙunshi resistors masu canzawa guda biyu don X da Y axes, da maɓallin turawa don ƙarin shigarwa.

joystick_schematic
ESP32-26-xy-joystick-schematic

Joystick yana fitar da siginonin analog da suka dace da matsayinsa, waɗanda ESP32 ke karantawa ta pins ɗin analog. Maɓallin turawa yana ba da siginar dijital lokacin da aka danna shi. Buzzer an haɗa shi da pin ɗin fitarwa na dijital akan ESP32, yana ba da damar kunna shi ko kashe shi bisa ga matsayin joystick.

Bayanan Datasheet

Manufacturer SunFounder
Part number XY Joystick Module
Operating Voltage 3.3 V – 5 V
Resistor Value 10 kΩ (kowane axis)
Max Current 20 mA
Switch Type Maɓallin turawa na ɗan lokaci
Dimensions Kusan 50 mm x 50 mm

 

  • Tabbatar da cewa joystick yana da ƙarfin 3.3 V don dacewa da ESP32.
  • Yi amfani da resistors na pull-up don maɓallin don guje wa shigarwar da ba ta da tushe.
  • Haɗa fitarwar analog zuwa pins ɗin ADC na ESP32 (34 don X, 35 don Y).
  • Yi amfani da tsarin debounce don maɓallin don hana kunna ƙarya.
  • Kula da matakan ƙarfin lantarki don tabbatar da cewa sun kasance cikin iyakokin aiki masu aminci.

Umarnin Haɗin Waya

ESP32-26-xy-joystick-wiring

Don haɗa joystick zuwa ESP32, fara da haɗa pin ɗin ƙasa daga joystick zuwa pin ɗin ƙasa akan ESP32. Na gaba, haɗa pin ɗin VCC na joystick zuwa pin ɗin 3.3 V akan ESP32. Joystick yana da pins ɗin fitarwa na analog guda biyu: haɗa fitarwar X-axis (wanda aka lakafta VRX) zuwa pin 34 akan ESP32 da fitarwar Y-axis (wanda aka lakafta VRY) zuwa pin 35.

Don fitarwar maɓallin, haɗa pin ɗin maɓallin zuwa pin 33 akan ESP32. Wannan pin zai karanta danna maɓallin azaman shigarwar dijital. Tabbatar da cewa haɗin suna da aminci don guje wa matsalolin da ke faruwa a lokaci-lokaci. Idan haɗin wayarka ya bambanta da na bidiyo (a cikin bidiyo a 02:30), daidaita yayin bin ƙa'idodi iri ɗaya don haɗin analog da dijital.

Misalan Code & Bayani

A cikin code, mun fara da ayyana ƙididdiga don pins ɗin joystick. Masu gano xAxis, yAxis, da btn an saita su zuwa 34, 35, da 33, bi da bi. Wannan yana sauƙaƙa yin nuni ga waɗannan pins ɗin a duk cikin shirin.

#define xAxis 34
#define yAxis 35
#define btn 33

A cikin aikin setup(), mun fara sadarwar serial kuma mun saita yanayin pin ɗin maɓallin zuwa input. Wannan yana shirya ESP32 don karanta bayanai daga joystick da aika su zuwa serial monitor.

void setup() {
  Serial.begin(115200);
  pinMode(btn, INPUT);  
}

A cikin loop(), muna karanta ƙimar analog don X da Y axes na joystick ta amfani da analogRead() kuma mu adana su a cikin xValue da yValue. Ana karanta yanayin maɓallin ta amfani da digitalRead() kuma ana adana shi a cikin btnValue. A ƙarshe, muna buga waɗannan ƙimar zuwa serial monitor.

void loop() {
  int xValue = analogRead(xAxis);
  int yValue = analogRead(yAxis); 
  int btnValue = digitalRead(btn);
  
  Serial.printf("Joystick value is %d , %d , %d \n",xValue,yValue,btnValue);
  delay(300);  // Jinkiri tsakanin karatu
}

Wannan loop yana ci gaba da sabunta ƙimar, yana ba da amsa a lokaci guda kan motsin joystick da danna maɓallin. Don cikakken code, da fatan za a koma ga cikakken code da aka ɗora a ƙasan labarin.

Nuni / Abin Da Za Ka Yi Tsammani

Lokacin da aka gama saitin kuma aka ɗora code, serial monitor ya kamata ya nuna ƙimar X da Y tare da yanayin maɓallin. Yayin da kake motsa joystick, ƙimar za su canza daidai da haka, suna nuna matsayinsa. Danna maɓallin zai canza yanayinsa tsakanin high da low.

Abubuwan da ake yawan yin kuskure sun haɗa da wayoyi marasa kyau, waɗanda zasu iya haifar da shigar da ba ta da tushe ko rashin amsawa daga joystick ɗin. Tabbatar an yi amfani da pins ɗin da suka dace kuma an sanya resistors ɗin jawo sama don maɓallin. Kalli bidiyon don ganin misalai na zahiri na waɗannan halaye (a cikin bidiyon a 13:00).

Lokutan Bidiyo

  • 00:00 Farawa
  • 1:47 Gabatarwa ga XY Joystick
  • 7:32 Auna ƙimar Joystick
  • 8:40 Bayanin wayoyi
  • 11:06 Bayanin lambar Arduino don Joystick tare da ESP32
  • 14:43 Zaɓin allo na ESP32 da tashar COM a cikin Arduino IDE
  • 16:24 Nunin amfani mai sauƙi na Joystick
  • 19:20 Gano matsayin lambar joystick tare da buzzer
  • 21:16 Nunin gano matsayi

Hotuna

joystick_schematic
joystick_schematic
ESP32-26-xy-joystick-schematic
ESP32-26-xy-joystick-schematic
ESP32-26-xy-joystick-wiring
ESP32-26-xy-joystick-wiring
ESP32-26-xy-joystick-main
ESP32-26-xy-joystick-main
826-ESP32 Tutorial 26/55- Arduino code for XY Joystick
Harshe: C++
// Define constants for the x and y axis and the button pins
#define xAxis 34
#define yAxis 35
#define btn 33


void setup() {
  // Initialize serial communication at 115200 bits per second:
  Serial.begin(115200);

  // Set the mode of the button pin to input
  pinMode(btn, INPUT);  
}

void loop() {
  // Read the analog value for x,y axis
  int xValue = analogRead(xAxis);
  int yValue = analogRead(yAxis); 

  // Read the digital value from the button pin
  int btnValue = digitalRead(btn);
  
  // print out the values
  Serial.printf("Joystick value is %d , %d , %d \n",xValue,yValue,btnValue);
  
  delay(300);  // Delay between reads
}

Albarkatun da kuma shafukan da za a duba

Fayiloli📁

Babu fayiloli da ake da su.