Search Code

ESP32 Tutoriaal 26/55 - Gebruik van Joystick met Arduino om Aksie te Neem | SunFounder se ESP32 IoT-kit

ESP32 Tutoriaal 26/55 - Gebruik van Joystick met Arduino om Aksie te Neem | SunFounder se ESP32 IoT-kit

In hierdie tutoriaal sal ons leer hoe om 'n XY-stuurstok met die ESP32-mikrobeheerder van SunFounder te koppel, sodat ons sy posisie kan opspoor en aksie kan neem op grond van sy invoer. Ons sal ook 'n gonser integreer wat aktiveer wanneer die stuurstok na 'n spesifieke posisie beweeg word. Hierdie kombinasie sal ons in staat stel om interaktiewe projekte te skep wat in reële tyd op gebruikersinvoer reageer.

ESP32-26-xy-joystick-main

Die XY-stuurstok verskaf twee analoog-uitsette wat ooreenstem met die X- en Y-posisies en 'n skakelaar wat gedruk kan word om 'n aksie te aktiveer. Deur die waardes van die stuurstok te lees, kan ons verskeie elemente in ons projek beheer, soos om 'n gonser te aktiveer of waardes op die skerm te vertoon. Om die proses ten volle te verstaan, maak seker dat jy die video vir bykomende insigte kyk (in video by 00:00).

Hardeware Verduidelik

Die hoofkomponente vir hierdie projek sluit die ESP32-mikrobeheerder, die XY-stuurstok en 'n gonser in. Die ESP32 is 'n veelsydige bord wat Wi-Fi en Bluetooth ondersteun, wat dit ideaal maak vir IoT-projekte. Die XY-stuurstok bestaan uit twee veranderlike resistors vir die X- en Y-asse, en 'n drukknoppie-skakelaar vir bykomende invoer.

joystick_schematic
ESP32-26-xy-joystick-schematic

Die stuurstok gee analoog-seine uit wat ooreenstem met sy posisie, wat deur die ESP32 se analoog-penne gelees word. Die drukknoppie verskaf 'n digitale sein wanneer dit gedruk word. Die gonser is aan 'n digitale uitsetpen op die ESP32 gekoppel, wat dit moontlik maak om dit te aktiveer of deaktiveer op grond van die stuurstok se posisie.

Datablad Besonderhede

Vervaardiger SunFounder
Deelnommer XY Joystick Module
Werkspanning 3.3 V – 5 V
Resistorwaarde 10 kΩ (elke as)
Maksimum Stroom 20 mA
Skakelaartipe Momentêre drukknoppie
Afmetings Ongeveer 50 mm x 50 mm

 

  • Maak seker die stuurstok word met 3.3 V aangedryf vir verenigbaarheid met die ESP32.
  • Gebruik optrekweerstande vir die skakelaar om drywende invoere te vermy.
  • Koppel analoog-uitsette aan die ESP32 se ADC-penne (34 vir X, 35 vir Y).
  • Gebruik 'n ontstuiteringsmeganisme vir die skakelaar om vals aktivering te voorkom.
  • Monitor die spanningsvlakke om te verseker dat hulle binne veilige werkingslimiete bly.

Bedradingsinstruksies

ESP32-26-xy-joystick-wiring

Om die stuurstok aan die ESP32 te bedraad, begin deur die grondpen van die stuurstok aan 'n grondpen op die ESP32 te koppel. Koppel volgende die VCC-pen van die stuurstok aan die 3.3 V-pen op die ESP32. Die stuurstok het twee analoog-uitsetpenne: koppel die X-as-uitset (gemerk as VRX) aan pen 34 op die ESP32 en die Y-as-uitset (gemerk as VRY) aan pen 35.

Vir die skakelaaruitset, koppel die skakelaarpen aan pen 33 op die ESP32. Hierdie pen sal die knoppiedruk as 'n digitale invoer lees. Maak seker dat die verbindings veilig is om intermitterende probleme te vermy. As jou bedrading verskil van die video (in video by 02:30), pas dienooreenkomstig aan terwyl jy dieselfde beginsels vir analoog- en digitale verbindings volg.

Kode Voorbeelde & Deurloop

In die kode begin ons deur konstantes vir die stuurstokpenne te definieer. Die identifiseerders xAxis, yAxis en btn word onderskeidelik op 34, 35 en 33 gestel. Dit maak dit maklik om na hierdie penne deur die program te verwys.

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

In die setup()-funksie initialiseer ons seriekommunikasie en stel die knoppiepenmodus na invoer. Dit berei die ESP32 voor om data van die stuurstok te lees en dit na die serie-monitor te stuur.

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

Binne die loop() lees ons die analoogwaardes vir die stuurstok se X- en Y-asse met analogRead() en stoor dit in xValue en yValue. Die knoppietoestand word met digitalRead() gelees en in btnValue gestoor. Laastens druk ons hierdie waardes na die serie-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);  // Vertraging tussen lesings
}

Hierdie lus werk die waardes voortdurend by, wat intydse terugvoer oor stuurstokbeweging en knoppiedrukke verskaf. Vir die volledige kode, verwys asseblief na die volledige kode wat onder die artikel gelaai is.

Demonstrasie / Wat om te Verwag

Wanneer die opstelling voltooi is en die kode opgelaai is, moet die serie-monitor die X- en Y-waardes saam met die knoppietoestand vertoon. Soos jy die stuurstok beweeg, sal die waardes dienooreenkomstig verander, wat sy posisie weerspieël. Deur die knoppie te druk, sal sy toestand tussen hoog en laag wissel.

Algemene slaggate sluit verkeerde bedrading in, wat kan lei tot drywende insette of geen reaksie van die joystick nie. Maak seker dat die korrekte penne gebruik word en dat die optrekweerstande vir die skakelaar geïmplementeer word. Kyk die video vir praktiese demonstrasies van hierdie gedrag (in video by 13:00).

Video Tydstempels

  • 00:00 Begin
  • 1:47 Inleiding tot XY Joystick
  • 7:32 Meet van Joystick-waardes
  • 8:40 Bedrading verduidelik
  • 11:06 Arduino-kode vir Joystick met ESP32 verduidelik
  • 14:43 Kies ESP32-bord en COM-poort in Arduino IDE
  • 16:24 Demonstrasie van eenvoudige gebruik van Joystick
  • 19:20 Opspoor van posisie van joystick-kode met gonser
  • 21:16 Demonstrasie van posisie-opsporing

Beelde

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
Taal: 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
}

Hulpbronne en verwysings

Lêers📁

Geen lêers beskikbaar.