Примеры проектов на ESP32
Примеры проектов на ESP32 — 199 готовых примеров со схемой и кодом. Откройте любой в браузере и запустите без платы и проводов.
Случайные числа
esp_random() берёт энтропию из аппаратного генератора. random() без засева даёт одну и ту же последовательность.
Файл во внутренней памяти
SPIFFS даёт обычные файлы поверх флеша: открыть, дописать, прочитать.
Шаговый двигатель
Полношаговая последовательность на четырёх выводах. Скорость ограничена паузой между шагами.
Энкодер KY-040: счётчик щелчков и кнопка
Ручка без упоров: поворот считается прерыванием по спаду CLK, направление — по уровню DT. У ESP32 прерывание можно повесить на люб…
FreeRTOS: две задачи
Каждая задача со своим циклом и своей задержкой. loop() при этом остаётся третьей задачей.
FreeRTOS: задачи по ядрам
У ESP32 два ядра. xTaskCreatePinnedToCore прибивает задачу к одному из них — и это видно по xPortGetCoreID().
FreeRTOS: запас стека задачи
Переполнение стека задачи — частая и трудноуловимая авария. Запас лучше померить заранее.
NVS: сохранение рекордов
Запись только при изменении. Ресурс флеша конечен, и переписывать одно и то же в цикле не стоит.
NeoPixel: адресные светодиоды
Одна линия данных на всю ленту. Цвет каждого пикселя задаётся отдельно, показывается по show().
Serial: разбор команд
Команда и аргумент, разделённые пробелом. Отсюда вырастает консоль прибора.
Антидребезг кнопки
Механический контакт при нажатии дребезжит несколько миллисекунд. Без фильтра одно нажатие считается десятком.
Аппаратный таймер
Прерывание строго по расписанию, независимо от того, чем занят loop(). Точнее любого millis().
Несколько задач по времени
Три независимых периода в одном loop(). Каждая задача помнит своё время последнего запуска.
Парктроник
Чем ближе препятствие, тем чаще писк. Расстояние превращается в период — приём, который работает и без дисплея.
Потенциометр: чтение АЦП
analogRead и 12 бит разрешения. Значение 0…4095 на всю шкалу.
Пробуждение кнопкой
Просыпается не по времени, а по внешнему сигналу. Вывод должен быть из числа RTC-выводов.
Проверка выводов
Перебор безопасных выводов с переключением. Помогает найти обрыв в макетке.
Режим по требованию и экономия
Датчик умеет спать между измерениями. Разница режимов и то, чем за неё платят.
Реле по расписанию
Периодическое включение нагрузки. Реле — единственный способ управлять чем-то мощнее светодиода.
Сканер шины I2C
Первое, что запускают, когда датчик на шине не отвечает: перебор всех адресов.
Уровень: крен и тангаж
Углы считаются из вектора силы тяжести — двумя арктангенсами. Покрутите наклон в свойствах датчика и смотрите на пузырёк.
Часы целиком: сеть, резерв, настройки, конфиг
Все пять библиотек вместе: время из сети, резерв в микросхеме, счётчик сверок в NVS, настройки конфигом JSON, экран.
FreeRTOS: очередь между задачами
Правильный способ передать данные из задачи в задачу. Общая переменная без защиты рано или поздно подведёт.
RGB: перебор цветов
Три канала ШИМ на один светодиод. Показывает, что цвет — это три независимые яркости.