ESP32:Примеры/Управление светодиодом с помощью емкостного контакта
![]() |
Черновик |
Содержание
Управление светодиодом с помощью емкостного контакта
Этот скетч-пример демонстрирует как с помощью данных от емкостного сенсорного контакта можно будет управлять светодиодом.
Найдите алюминиевую фольгу, отрежьте от нее маленький кусочек и оберните вокруг металлического стержня неподключенного конца провода-перемычки.
Запустите на ESP32 код, из примера Считывание данных с тактильного датчика, и снова откройте монитор порта.
Теперь прикоснитесь к алюминиевой фольге. Видите, как меняются значения?
Итак, когда мы не касаемся фольги, то значения в среднем достигают значения «70» и чуть выше, а когда касаемся, значение уменьшается до менее «10».
Это позволяет нам задать пороговое значение – если данные от сенсора упадут ниже этого значения, это включит светодиод. То есть, к примеру, хорошим пороговым значением для этой ситуации будет «20».
Теперь скопируйте в IDE Arduino код из раздела снизу. Этот код считывает значение с емкостной фольговой кнопки, подключенной к заданному нами контакту, и включает светодиод, если «фольговое» значение падает ниже заданного порога – это будет значить, что вы приложили палец к кнопке из алюминиевой фольги.
Загрузите скетч на ESP32. Прикоснитесь к алюминиевой фольге – если все сделано правильно, светодиод должен загореться.
Необходимое оборудование
- Плата ESP32 - 1шт.;
- Резистор 330 Ом - 1шт.;
- Светодиод - 1шт.
- Провода-перемычки;
- Макетная плата - 1шт;
Схема
![]() |
На данной схеме используется плата ESP32S-HiLetgo, если вы используете другую, сверьтесь с вашей распиновкой. |
Провод-перемычка с фольгой подключен к GPIO4. Светодиод через резистор подключен к GPIO16.
Код
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 }
См.также
Внешние ссылки