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

Материал из Онлайн справочника
Версия от 17:46, 22 декабря 2018; Myagkij (обсуждение | вклад) (→‎Код)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Черновик


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

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

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

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

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

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

Данные с емкостного контакта считываются очень просто. В 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. После прикосновения монитор порта должен начать показывать более низкие значения.

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

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

Схема

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


Код

// Тестовый скетч для емкостного сенсорного контакта ESP32.
// Емкостный сенсорный датчик 0 – это контакт GPIO4.

void setup()
{
Serial.begin(115200);
delay(1000);                          // даем время на установление последовательной коммуникации
Serial.println("ESP32 Touch Test");   // "Тест емкостного сенсорного контакта ESP32"
}
void loop()
{
Serial.println(touchRead(4));         // считываем значение сенсорного контакта 0 (GPIO4)
delay(1000);
}

См.также

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