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

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

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


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 }

См.также

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