ESP32 Урок 26/55 - Использование джойстика с Arduino: принятие мер | Набор SunFounder для ESP32 IoT
В этом руководстве мы узнаем, как подключить XY-джойстик к микроконтроллеру ESP32 от SunFounder, что позволит нам определять его положение и реагировать на его ввод. Мы также интегрируем зуммер, который активируется при перемещении джойстика в определенное положение. Эта комбинация позволит нам создавать интерактивные проекты, реагирующие на ввод пользователя в реальном времени.
XY-джойстик обеспечивает два аналоговых выхода, соответствующих положениям X и Y, а также переключатель, который можно нажать для запуска действия. Считывая значения с джойстика, мы можем управлять различными элементами нашего проекта, такими как активация зуммера или отображение значений на экране. Чтобы полностью понять процесс, обязательно посмотрите видео для получения дополнительной информации (на видео в 00:00).
Объяснение аппаратного обеспечения
Основными компонентами этого проекта являются микроконтроллер ESP32, XY-джойстик и зуммер. ESP32 — это универсальная плата, поддерживающая Wi-Fi и Bluetooth, что делает ее идеальной для проектов IoT. XY-джойстик состоит из двух переменных резисторов для осей X и Y и кнопочного переключателя для дополнительного ввода.
Джойстик выдает аналоговые сигналы, соответствующие его положению, которые считываются аналоговыми выводами ESP32. Кнопка обеспечивает цифровой сигнал при нажатии. Зуммер подключен к цифровому выходному выводу ESP32, что позволяет активировать или деактивировать его в зависимости от положения джойстика.
Детали из технического описания
| Производитель | SunFounder |
|---|---|
| Номер детали | Модуль XY-джойстика |
| Рабочее напряжение | 3,3 В – 5 В |
| Значение резистора | 10 кОм (на каждую ось) |
| Максимальный ток | 20 мА |
| Тип переключателя | Тактовая кнопка |
| Размеры | Прибл. 50 мм x 50 мм |
- Убедитесь, что джойстик питается от 3,3 В для совместимости с ESP32.
- Используйте подтягивающие резисторы для переключателя, чтобы избежать плавающих входов.
- Подключите аналоговые выходы к выводам АЦП ESP32 (34 для X, 35 для Y).
- Используйте механизм антидребезга для переключателя, чтобы предотвратить ложные срабатывания.
- Контролируйте уровни напряжения, чтобы убедиться, что они остаются в безопасных рабочих пределах.
Инструкции по подключению

Чтобы подключить джойстик к ESP32, начните с соединения контакта заземления джойстика с контактом заземления на ESP32. Затем подключите контакт VCC джойстика к контакту 3,3 В на 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); // Задержка между чтениями
}
Этот цикл непрерывно обновляет значения, обеспечивая обратную связь в реальном времени о движении джойстика и нажатиях кнопок. Для полного кода обратитесь к полному коду, загруженному ниже статьи.
Демонстрация / Что ожидать
Когда настройка завершена и код загружен, последовательный монитор должен отображать значения 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 Демонстрация определения положения
/*
* // Определите константы для осей x и y, а также для контактов кнопок
*/
#define xAxis 34
#define yAxis 35
#define btn 33
void setup() {
// Инициализируйте последовательную связь на скорости 115200 бит в секунду:
Serial.begin(115200);
// Установите режим кнопочного пина на входной.
pinMode(btn, INPUT);
}
void loop() {
// Считайте аналоговое значение для осей x и y.
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); // Задержка между чтениями
}
Common Course Links
Common Course Files
Ресурсы и ссылки
-
ДокументацияESP32 Учебник 26/55 - страница документа SunFounder для джойстикаdocs.sunfounder.com
Файлы📁
Нет доступных файлов.