Хочешь создать умный дом, но не знаешь как? Присмотрись к Node-REDCutehamster.gif! Так же не забывай поддержать наш справочникCutehamster.gif.

ESP32:Примеры/Управление светодиодом с помощью емкостного контакта

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 3377 статей для сайта.

Контакты:

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


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


Управление светодиодом с помощью емкостного контакта

Этот скетч-пример демонстрирует как с помощью данных от емкостного сенсорного контакта можно будет управлять светодиодом.

Найдите алюминиевую фольгу, отрежьте от нее маленький кусочек и оберните вокруг металлического стержня неподключенного конца провода-перемычки.

Запустите на ESP32 код, из примера Считывание данных с тактильного датчика, и снова откройте монитор порта.

Теперь прикоснитесь к алюминиевой фольге. Видите, как меняются значения?

Touch sensor read exp monitor 1.PNG

Итак, когда мы не касаемся фольги, то значения в среднем достигают значения «70» и чуть выше, а когда касаемся, значение уменьшается до менее «10».

Это позволяет нам задать пороговое значение – если данные от сенсора упадут ниже этого значения, это включит светодиод. То есть, к примеру, хорошим пороговым значением для этой ситуации будет «20».

Теперь скопируйте в IDE Arduino код из раздела снизу. Этот код считывает значение с емкостной фольговой кнопки, подключенной к заданному нами контакту, и включает светодиод, если «фольговое» значение падает ниже заданного порога – это будет значить, что вы приложили палец к кнопке из алюминиевой фольги.

Загрузите скетч на ESP32. Прикоснитесь к алюминиевой фольге – если все сделано правильно, светодиод должен загореться.

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

Схема

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


Провод-перемычка с фольгой подключен к GPIO4. Светодиод через резистор подключен к GPIO16.

Touch sensor onoff led exp 1.PNG.png

Код

  1. // задаем номера для контактов:
  2. const int touchPin = 4;
  3. const int ledPin = 16;
  4.  
  5. // задаем пороговое значение:
  6. const int threshold = 20;
  7. // переменная для хранения значения сенсорного контакта:
  8. int touchValue;
  9.  
  10. void setup(){
  11.   Serial.begin(115200);
  12.   delay(1000);                    // даем время на установление последовательной коммуникации
  13.   pinMode (ledPin, OUTPUT);       // инициализируем контакт светодиода, также делая его выходным контактом
  14. }
  15.  
  16. void loop(){
  17.   // считываем состояние емкостной сенсорной кнопки:
  18.   touchValue = touchRead(touchPin);
  19.   Serial.print(touchValue);
  20.   // проверяем, упало ли значение «touchValue» ниже заданного порога,
  21.   // и если упало, присваиваем контакту «ledPin» значение «HIGH»:
  22.   if(touchValue < threshold){
  23.     // включаем светодиод:
  24.     digitalWrite(ledPin, HIGH);
  25.     Serial.println(" - LED on");  //  " – светодиод включен"
  26.   }
  27.   else{
  28.     // выключаем светодиод:
  29.     digitalWrite(ledPin, LOW);
  30.     Serial.println(" - LED off");  //  " – светодиод выключен"
  31.   }
  32.   delay(500);
  33. }

См.также

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