ESP32:Примеры/Считывание данных с тактильного датчика

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Pixel Art Mini Meow Animated.gif Черновик


Считывание данных с тактильного датчика

Этот скетч-пример демонстрирует как считывать данные с тактильного датчика.

ESP32 оснащен 10 тактильными датчиками (емкостными сенсорными GPIO-контактами). Они могут «чувствовать» изменения в электроемкости сенсорного контакта, возникающие при соприкосновении с чем-либо (вроде человеческой кожи). К примеру, эти изменения могут быть вызваны, если прикоснуться к емкостному сенсорному GPIO-контакту пальцем.

К этим контактам можно подключить емкостные «клавиши» (сделанные, например, из фольги) и затем использовать их вместо механических кнопок. Взгляните на распиновку ниже – на ней емкостные сенсорные контакты помечены розовым цветом (всего их 9).

ESP32 DEVKIT V1 DOIT -30-GPIOs.png

Как видите, емкостный сенсор 0 – это контакт GPIO4, емкостный сенсор 2 – это GPIO2 и так далее.

Примечание: Емкостный сенсор 1 – это GPIO0, но на этой 30-контактной версии ES32 этого контакта нет. Впрочем, контакт GPIO0 есть на новой 36-контактной версии этой платы(см.ниже).

ESP32 DEVKIT V1 DOIT -36-GPIOs.png

Данные с емкостного контакта считываются очень просто. В IDE Arduino для этого используется функция touchRead(), в которой нужно задать лишь один параметр – GPIO-контакт, значение которого нужно прочесть.

touchRead(GPIO)

Давайте взглянем, как эта функция работает на практике. Запустите IDE Arduino и скопируйте код из раздела ниже.

Этот скетч считывает значение сенсорного контакта 0 и показывает результаты в мониторе порта.

Сенсорный контакт 0 – это GPIO-контакт 4 (как видно на распиновке выше).

В этом коде мы в блоке setup() инициализируем последовательную коммуникацию, через которую будем передавать данные, считанные с сенсорного контакта.

Serial.begin(115200);

В блоке loop() начинаем считывать данные с сенсорного контакта.

Serial.println(touchRead(4));

Здесь используется функция touchRead(), где параметром служит контакт, данные с которого нужно прочесть. В этом скетче-примере мы считываем данные с сенсорного контакта 0 (то есть с GPIO-контакта номер 4).

Теперь загружаем код на ESP32. Убедитесь, что в IDE Arduino выбраны правильные плата и порт.

Подключите провод-перемычку к контакту GPIO4 – он будет служить «удлинителем» для считывания прикосновений. В IDE Arduino кликните на «Инструменты» > «Монитор порта» (Tools > Serial Monitor) и выставьте в открывшемся мониторе порта скорость коммуникации на 115200 бод. После этого в мониторе порта начнут каждую секунду появляться новые данные.

Прикоснитесь к проводу, подключенному к контакту GPIO4. После прикосновения монитор порта должен начать показывать более низкие значения.

Touch sensor read exp monitor 1.PNG

Кроме того, эти значения можно посмотреть в более наглядном варианте – при помощи плоттера. Закройте монитор порта и кликните в IDE Arduino на «Инструменты» > «Плоттер по последовательному соединению» (Tools > Serial Plotter).

Touch sensor read exp plotter 1.PNG

Необходимое оборудование

Схема

Pixel Art Mini Meow Animated.gif На данной схеме используется плата ESP32S-HiLetgo, если вы используете другую, сверьтесь с вашей распиновкой.


Touch sensor read exp 1.PNG.png

Код

 1 // Тестовый скетч для емкостного сенсорного контакта ESP32.
 2 // Емкостный сенсорный датчик 0 – это контакт GPIO4.
 3 
 4 void setup()
 5 {
 6 Serial.begin(115200);
 7 delay(1000);                          // даем время на установление последовательной коммуникации
 8 Serial.println("ESP32 Touch Test");   // "Тест емкостного сенсорного контакта ESP32"
 9 }
10 void loop()
11 {
12 Serial.println(touchRead(4));         // считываем значение сенсорного контакта 0 (GPIO4)
13 delay(1000);
14 }

См.также

Внешние ссылки