Search Code

ESP32 Упатство 26/55 - Користење на џојстик со Arduino преземање акција | SunFounder's ESP32 IoT комплет

ESP32 Упатство 26/55 - Користење на џојстик со Arduino преземање акција | SunFounder's ESP32 IoT комплет

Во ова упатство, ќе научиме како да поврземе XY џојстик со ESP32 микроконтролерот од SunFounder, што ќе ни овозможи да ја детектираме неговата позиција и да преземеме акција врз основа на неговиот влез. Исто така, ќе интегрираме зумер кој се активира кога џојстикот ќе се помести на одредена позиција. Оваа комбинација ќе ни овозможи да креираме интерактивни проекти кои реагираат на корисничкиот влез во реално време.

ESP32-26-xy-joystick-main

XY џојстикот обезбедува два аналогни излези кои одговараат на X и Y позициите и прекинувач кој може да се притисне за да се активира акција. Со читање на вредностите од џојстикот, можеме да контролираме различни елементи во нашиот проект, како што се активирање на зумер или прикажување вредности на екранот. За целосно разбирање на процесот, задолжително погледнете го видеото за дополнителни сознанија (во видеото на 00:00).

Објаснување на хардверот

Главните компоненти за овој проект вклучуваат ESP32 микроконтролер, XY џојстик и зумер. ESP32 е разноврсна плоча која поддржува Wi-Fi и Bluetooth, што ја прави идеална за IoT проекти. XY џојстикот се состои од два променливи отпорници за X и Y оските и копче со прекинувач за дополнителен влез.

joystick_schematic
ESP32-26-xy-joystick-schematic

Џојстикот излегува аналогни сигнали кои одговараат на неговата позиција, кои се читаат од аналогните пинови на ESP32. Копчето обезбедува дигитален сигнал кога е притиснато. Зумерот е поврзан на дигитален излезен пин на ESP32, што овозможува да се активира или деактивира врз основа на позицијата на џојстикот.

Детали од техничката документација

Производител SunFounder
Број на дел XY Joystick Module
Работен напон 3.3 V – 5 V
Вредност на отпорник 10 kΩ (по оска)
Максимална струја 20 mA
Тип на прекинувач Моментално копче
Димензии Приближно 50 mm x 50 mm

 

  • Осигурете се дека џојстикот е напојуван со 3.3 V за компатибилност со ESP32.
  • Користете pull-up отпорници за прекинувачот за да избегнете лебдечки влезови.
  • Поврзете ги аналогните излези на ADC пиновите на ESP32 (34 за X, 35 за Y).
  • Користете механизам за дебаунсирање на прекинувачот за да спречите лажно активирање.
  • Следете ги нивоата на напон за да осигурите дека остануваат во безбедни работни граници.

Инструкции за поврзување

ESP32-26-xy-joystick-wiring

За да го поврзете џојстикот со ESP32, започнете со поврзување на ground пинот од џојстикот со ground пин на ESP32. Потоа, поврзете го VCC пинот на џојстикот со 3.3 V пинот на ESP32. Џојстикот има два аналогни излезни пина: поврзете го X-оската излез (означен како VRX) со пин 34 на ESP32 и Y-оската излез (означен како VRY) со пин 35.

За излезот на прекинувачот, поврзете го пинот на прекинувачот со пин 33 на ESP32. Овој пин ќе го чита притискањето на копчето како дигитален влез. Осигурете се дека врските се безбедни за да избегнете повремени проблеми. Ако вашето поврзување се разликува од видеото (во видеото на 02:30), прилагодете се соодветно додека ги следите истите принципи за аналогни и дигитални врски.

Примери на код и објаснување

Во кодот, започнуваме со дефинирање на константи за пиновите на џојстикот. Идентификаторите xAxis, yAxis и btn се поставени на 34, 35 и 33, соодветно. Ова го олеснува повикувањето на овие пинови низ целата програма.

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

Во функцијата setup(), ја иницијализираме сериската комуникација и го поставуваме режимот на пинот за копчето на влез. Ова го подготвува ESP32 да чита податоци од џојстикот и да ги испраќа до серискиот монитор.

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

Внатре во loop(), ги читаме аналогните вредности за X и Y оските на џојстикот користејќи analogRead() и ги складираме во xValue и yValue. Состојбата на копчето се чита со digitalRead() и се складира во btnValue. Конечно, ги печатиме овие вредности на серискиот монитор.

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);  // Delay between reads
}

Оваа јамка континуирано ги ажурира вредностите, обезбедувајќи повратна информација во реално време за движењето на џојстикот и притискањата на копчето. За целосниот код, ве молиме погледнете го целосниот код вчитан под статијата.

Демонстрација / Што да очекувате

Кога поставувањето е завршено и кодот е вчитан, серискиот монитор треба да ги прикажува X и Y вредностите заедно со состојбата на копчето. Како што го движите џојстикот, вредностите ќе се менуваат соодветно, одразувајќи ја неговата позиција. Притискањето на копчето ќе ја менува неговата состојба помеѓу висока и ниска.

Вообичаени грешки вклучуваат неправилно поврзување, што може да доведе до лебдечки влезови или никаков одговор од џојстикот. Осигурајте се дека се користат точните пинови и дека отпорниците за повлекување нагоре се имплементирани за прекинувачот. Погледнете го видеото за практични демонстрации на овие однесувања (во видеото на 13:00).

Временски ознаки на видеото

  • 00:00 Почеток
  • 1:47 Вовед во XY џојстик
  • 7:32 Мерење на вредностите на џојстикот
  • 8:40 Објаснување на поврзувањето
  • 11:06 Објаснување на Arduino кодот за џојстик со ESP32
  • 14:43 Избор на ESP32 плоча и COM порта во Arduino IDE
  • 16:24 Демонстрација на едноставна употреба на џојстик
  • 19:20 Детектирање на позицијата на џојстикот со код и зумер
  • 21:16 Демонстрација на детектирање на позицијата

Images

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

Resources & references

Files📁

No files available.