ESP32 DevKit v1 · pinport
готово
⋮

Джойстик KY-023: две оси и кнопка

Две оси — это два потенциометра на АЦП, кнопка в оси замыкает SW на землю. Скетч определяет направление с мёртвой зоной вокруг центра.

Что на схеме

Плата ESP32 DevKit v1, к ней подключены:

  • Джойстик KY-023 — joy1

Задействованы выводы платы: 3V3, GND, D34, D35, D25. Всего соединений на схеме: 5.

Библиотеки

Дополнительных библиотек не нужно: всё делается ядром Arduino для ESP32, которое уже стоит в сборочном окружении.

Как это устроено в коде

Основное, чем пользуется скетч:

  • Serial.begin() — открывает монитор порта на заданной скорости
  • pinMode() — назначает выводу режим: выход, вход или вход с подтяжкой
  • analogRead() — измеряет напряжение на выводе через АЦП
  • digitalRead() — читает уровень на выводе
  • Serial.printf() — печатает в монитор порта с форматированием
  • delay() — пауза, на время которой ядро занято ожиданием

В скетче 37 строк; свои функции: direction(). Сам скетч открыт на соседней вкладке — его можно менять и запускать заново.

Что попробовать изменить

  • Замените delay() на счёт по millis() — и loop() освободится для всего остального, что должно происходить одновременно.
  • Покрутите движок детали прямо во время работы — значение на входе меняется на лету, останавливать эмуляцию не нужно.
  • Добавьте свои Serial.println() в интересных местах — монитор порта здесь и есть отладчик.
  • Перенесите деталь на другой вывод — на схеме и в коде — и убедитесь, что пример работает так же.

Смотрите также

← Все примеры галереи

Схема
Проект из галереи — запускать можно, менять нельзя.

      
Сборка ещё не запускалась.

    Печатайте в Serial числа — они станут графиком. Serial.println(t); — один ряд, Serial.printf("t:%.1f h:%.1f\n", t, h); — два с подписями. Формат тот же, что понимает плоттер Arduino IDE.