ESP32:Примеры/Управление светодиодом с помощью емкостного контакта
Управление светодиодом с помощью емкостного контакта
Этот скетч-пример демонстрирует как с помощью данных от емкостного сенсорного контакта можно будет управлять светодиодом.
Найдите алюминиевую фольгу, отрежьте от нее маленький кусочек и оберните вокруг металлического стержня неподключенного конца провода-перемычки.
Запустите на ESP32 код, из примера Считывание данных с тактильного датчика, и снова откройте монитор порта.
Теперь прикоснитесь к алюминиевой фольге. Видите, как меняются значения?
Итак, когда мы не касаемся фольги, то значения в среднем достигают значения «70» и чуть выше, а когда касаемся, значение уменьшается до менее «10».
Это позволяет нам задать пороговое значение – если данные от сенсора упадут ниже этого значения, это включит светодиод. То есть, к примеру, хорошим пороговым значением для этой ситуации будет «20».
Теперь скопируйте в IDE Arduino код из раздела снизу. Этот код считывает значение с емкостной фольговой кнопки, подключенной к заданному нами контакту, и включает светодиод, если «фольговое» значение падает ниже заданного порога – это будет значить, что вы приложили палец к кнопке из алюминиевой фольги.
Загрузите скетч на ESP32. Прикоснитесь к алюминиевой фольге – если все сделано правильно, светодиод должен загореться.
Необходимое оборудование
- Плата ESP32 - 1шт.;
- Резистор 330 Ом - 1шт.;
- Светодиод - 1шт.
- Провода-перемычки;
- Макетная плата - 1шт;
Схема
Провод-перемычка с фольгой подключен к GPIO4. Светодиод через резистор подключен к GPIO16.
Код
// задаем номера для контактов:
const int touchPin = 4;
const int ledPin = 16;
// задаем пороговое значение:
const int threshold = 20;
// переменная для хранения значения сенсорного контакта:
int touchValue;
void setup(){
Serial.begin(115200);
delay(1000); // даем время на установление последовательной коммуникации
pinMode (ledPin, OUTPUT); // инициализируем контакт светодиода, также делая его выходным контактом
}
void loop(){
// считываем состояние емкостной сенсорной кнопки:
touchValue = touchRead(touchPin);
Serial.print(touchValue);
// проверяем, упало ли значение «touchValue» ниже заданного порога,
// и если упало, присваиваем контакту «ledPin» значение «HIGH»:
if(touchValue < threshold){
// включаем светодиод:
digitalWrite(ledPin, HIGH);
Serial.println(" - LED on"); // " – светодиод включен"
}
else{
// выключаем светодиод:
digitalWrite(ledPin, LOW);
Serial.println(" - LED off"); // " – светодиод выключен"
}
delay(500);
}
См.также
Внешние ссылки