Начнем с алгоритма работы нашей программы!
1. Если нажать сенсор TTP 223, подключенный к порту D4, то на ножке микроконтроллера D4 появится сигнал, который включит светодиод.
2. В противном случае светодиод останется выключенным.
Теперь перейдём к написанию программы и созданию электрической схемы!
Перед вами схема, на которой изображен микроконтроллер, а также выводы gnd и питания 3,3 В. К порту D4 подсоединен сенсор TTP 223.
Ниже представлены распиновка и технические характеристики сенсорной кнопки.
Модель: |
TTP223B |
---|---|
Напряжение питания: |
2 – 5.5 В |
Потребляемый ток: |
4 мА (при напряжении 3 В) |
Время отклика: |
60 мс (220 мс в режиме экономии энергии) |
Чувствительность: |
0 – 50 пФ |
Практически к каждому материалу есть видеоролик на YouTube и RUTUBE каналах, теорию можно прочитать в статье, а как работает устройство в железе, посмотреть в видеоролике!
Теперь давайте вернёмся к программе.
Светодиод подключен к порту D2, поэтому в нашей программе необходимо настроить ножки этого порта на выход. Для этого в коде следует добавить следующую строку:
```
led = Pin(2, Pin.OUT);
```
Сенсор же подключен к порту D4, и его ножка должна быть настроена на вход. Это можно сделать, добавив в программу:
```
knopka = Pin(4, Pin.IN);
```
По алгоритму, микроконтроллер должен понимать, что при прикосновении к сенсору на порту D4 происходит смена 0 на 1.
После настройки портов можно приступить к написанию самой программы. Для начала следует добавить модуль import machine, который содержит все необходимые функции для работы платы. Чтобы избежать постоянного повторения слова «machine» в коде, введём строку:
```
from machine import Pin;
```
Далее подключим функции, которые будут использоваться для формирования задержек. Для этого используем строку:
```
from time import sleep;
```
Вот такой получился код:
Далее укажем ,что переменная led_on = False и напишем функцию изменения состояния светодиода.
def on_off_led(pin):
global led_on
led_on = not led_on
led.value(led_on)
Настроим Pin4 на срабатывание прерывания только по заднему фронту входа (когда он переходит от высокого к низкому) и опишем это в программе knopka.irq(trigger=Pin.IRQ_FALLING, handler=on_off_led), в бесконечном цикле while True вставим задержку sleep(0.1).
Собирая проект на ESP32 можно не использовать плату сенсор TTP 223 из этой статьи, так как ESP32 имеет 10 внутренних выводов, которые могут быть использованы для подключения емкостных датчиков. Эти выводы реагируют на изменения ёмкости, то есть на любые объекты, способные удерживать электрический заряд, такие как человеческая кожа. Благодаря этому, они могут обнаруживать прикосновения пальцев к датчикам.
GPIO0
GPIO2
GPIO4
GPIO12
GPIO13
GPIO14
GPIO15
GPIO27
GPIO32
GPIO33
Эти выводы (Capacitive Touch) могут быть легко интегрированы в пользовательский интерфейс, позволяя создавать сенсорные кнопки, которые могут заменить традиционные механические. Кроме того, они могут быть использованы для вывода ESP32 из состояния глубокого сна, что значительно экономит энергию.
Небольшой пример кода, который показывает, как можно запросить данные с встроенного ёмкостного сенсора.
Применяем класс TouchPad в модуле machine:
from machine import TouchPad, Pin t = TouchPad(Pin(0)) t.config(600) # Настраиваем порог срабатывания
t.read() # Возвращаем меньшее число при касании
Исходный код программы Скачать архив
Понравился проект? Не забудь поделиться им с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube и RUTUBE !
- СПАСИБО ЗА ПРОСМОТР.
- С уважением.
- Электроника и Робототехника!