Примеры проектов на ESP32
Примеры проектов на ESP32 — 199 готовых примеров со схемой и кодом. Откройте любой в браузере и запустите без платы и проводов.
TimeLib: время без часов
Библиотека не знает, откуда время, — она его считает. Отсюда её сила и её главная ловушка.
Будильник: раз в минуту
Будильник внутри микросхемы: она сама сравнивает время и поднимает признак. Плата может в это время спать.
Веб-сервер: лампа без перезагрузки
Страница сама спрашивает состояние и переключает лампу, не перезагружаясь. Разделение на страницу и JSON — то, с чего начинается л…
Замер времени выполнения
micros() и разница до/после. Первый шаг к оптимизации — узнать, что именно медленное.
Звук: одна нота
Пьезоизлучатель на ШИМ. Частота задаёт высоту, скважность — громкость.
Звук: сирена
Частота меняется непрерывно. Тот же приём, что у плавной яркости, но для звука.
Калибровка: из отсчётов в граммы
Коэффициент подбирается известным грузом один раз и записывается в скетч. Без него на экране будут отсчёты, а не вес.
Матричная клавиатура 4x4
Шестнадцать кнопок на восьми выводах. Сканирование по строкам и чтение столбцов.
Метроном
Темп задаётся потенциометром, щелчок — коротким импульсом. Пример совместной работы трёх устройств.
Плавное разгорание (ШИМ)
ledcWrite и скважность: яркость задаётся долей времени, когда вывод включён.
Потенциометр управляет яркостью
Связка вход-выход через map(). Первый пример, где приборы взаимодействуют.
Реле от кнопки с фиксацией
Кнопка без фиксации управляет нагрузкой с фиксацией. Состояние держит программа.
Своя точка доступа
Без роутера: прибор сам раздаёт сеть и отвечает по адресу 192.168.4.1. Так делают первичную настройку.
Сглаживание показаний АЦП
Скользящее среднее по кольцевому буферу. Сырой АЦП шумит на пару единиц всегда.
Секундомер
Пуск, стоп, сброс одной кнопкой по длительности нажатия. Состояние — три поля и переход между ними.
Сервопривод: развёртка
Угол задаётся длительностью импульса. Библиотека прячет это за градусами.
Счётчик импульсов на прерывании
Основа для расходомера, тахометра, счётчика оборотов: считать в обработчике, считать частоту в loop().
Счётчик пересечений луча
Фоторезистор как датчик прохода. Считается фронт, а не уровень, иначе один проход даст сотню срабатываний.
Таймер обратного отсчёта
Минуты и секунды на четырёх разрядах. Кнопка запускает и сбрасывает, а отсчёт идёт по millis, а не по delay.
Термистор NTC
Уравнение Стейнхарта–Харта в упрощённой форме: сопротивление в градусы через бета-коэффициент.
Ультразвук: медианный фильтр
Одиночный ложный отсчёт у сонара — норма. Медиана из трёх его выбрасывает, среднее — нет.
Усреднение по времени
Экспоненциальное сглаживание: одна переменная вместо буфера, коэффициент задаёт инерцию.
Preferences: что переживает перезагрузку
Счётчик запусков в NVS. Три строки кода и одна мысль: сброс платы — это не выключение питания, а для NVS разницы нет вовсе.
RGB: плавная радуга
Перевод HSV в RGB. Один параметр — оттенок — вместо трёх яркостей.