Search Code

ESP32 оқулығы 26/55 - Джойстикті Arduino-мен қолдану әрекет жасау | SunFounder ESP32 IoT жинағы

ESP32 оқулығы 26/55 - Джойстикті Arduino-мен қолдану әрекет жасау | SunFounder ESP32 IoT жинағы

Бұл оқулықта біз SunFounder компаниясының XY джойстигін ESP32 микроконтроллеріне қосу арқылы оның орнын анықтауды және оның кірісіне негізделген әрекеттерді орындауды үйренеміз. Сондай-ақ, джойстик белгілі бір позицияға жылжытылғанда іске қосылатын дыбыстық сигнал құрылғысын (buzzer) біріктіреміз. Бұл комбинация нақты уақыт режимінде пайдаланушы кірісіне жауап беретін интерактивті жобаларды жасауға мүмкіндік береді.

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 В – 5 В
Резистор мәні 10 кОм (әр ось)
Максималды ток 20 мА
Қосқыш түрі Моменттік түйме
Өлшемдері Шамамен 50 мм x 50 мм

 

  • ESP32-мен үйлесімділік үшін джойстикті 3.3 В кернеуімен қуаттандырыңыз.
  • Қалқымалы кірістерді болдырмау үшін қосқыш үшін жоғары тарту резисторларын қолданыңыз.
  • Аналогтық шығыстарды ESP32 ADC түйреуіштеріне қосыңыз (X үшін 34, Y үшін 35).
  • Қосқыштың жалған іске қосылуын болдырмау үшін дебаунс механизмін қолданыңыз.
  • Кернеу деңгейлерін қауіпсіз жұмыс шектерінде қалуын қамтамасыз ету үшін бақылаңыз.

Сым қосу нұсқаулары

ESP32-26-xy-joystick-wiring

Джойстикті ESP32-ге қосу үшін алдымен джойстиктің жер түйреуішін ESP32 жер түйреуішіне қосыңыз. Әрі қарай, джойстиктің VCC түйреуішін ESP32 3.3 В түйреуішіне қосыңыз. Джойстикте екі аналогтық шығыс түйреуіші бар: X осінің шығысын (VRX деп белгіленген) ESP32 34 түйреуішіне және Y осінің шығысын (VRY деп белгіленген) 35 түйреуішіне қосыңыз.

Қосқыш шығысы үшін қосқыш түйреуішін ESP32 33 түйреуішіне қосыңыз. Бұл түйреуіш түймені басуды цифрлық кіріс ретінде оқиды. Қосылымдардың сенімді болуын қамтамасыз етіңіз, себебі аралық ақаулар болуы мүмкін. Егер сым қосу схемаңыз бейнеден (бейнеде 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() ішінде біз analogRead() көмегімен джойстиктің X және Y осьтерінің аналогтық мәндерін оқып, оларды 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);  // Оқулар арасындағы кідіріс
}

Бұл цикл мәндерді үздіксіз жаңартып, джойстик қозғалысы мен түйме басулары туралы нақты уақыттағы кері байланысты қамтамасыз етеді. Толық код үшін мақаланың төменінде жүктелген толық кодты қараңыз.

Демонстрация / Не күтуге болады

Орнату аяқталғанда және код жүктелгенде, сериялық монитор X және Y мәндерін түйме күйімен бірге көрсетуі керек. Джойстикті жылжытқанда, мәндер оның орнын көрсетіп, сәйкесінше өзгереді. Түймені басу оның күйін жоғары және төмен арасында ауыстырады.

Жалпы қателіктерге дұрыс емес сым жалғау жатады, бұл қалқымалы кірістерге немесе джойстиктен жауаптың болмауына әкелуі мүмкін. Дұрыс пиндердің қолданылғанына және қосқыш үшін жоғары тарту резисторларының орнатылғанына көз жеткізіңіз. Осы әрекеттердің практикалық демонстрациялары үшін бейнені қараңыз (бейнеде 13:00-де).

Бейне уақыт белгілері

  • 00:00 Бастау
  • 1:47 XY джойстигіне кіріспе
  • 7:32 Джойстик мәндерін өлшеу
  • 8:40 Сым жалғау түсіндірілді
  • 11:06 ESP32 бар джойстикке арналған Arduino коды түсіндірілді
  • 14:43 Arduino IDE-де ESP32 платасын және COM портын таңдау
  • 16:24 Джойстикті қарапайым қолдану демонстрациясы
  • 19:20 Дыбыстық сигналмен джойстик кодының орнын анықтау
  • 21:16 Орнын анықтау демонстрациясы

Суреттер

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
Тіл: 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
}

Ресурстар мен сілтемелер

Файлдар📁

Файлдар жоқ.