Галерея проектов
Любой проект можно открыть, запустить и сделать своей копией. У каждого примера есть разбор: что на схеме, какие библиотеки нужны и что делает код.
Сравнение фильтров
Скользящее среднее, экспоненциальное и медиана на одних данных. Видно, чем они отличаются на выбросах.
Конечный автомат
Состояния, переходы и таблица. Способ описать поведение прибора, который перестаёт помещаться в if-ы.
FreeRTOS: сигнал из прерывания
Обработчик должен быть коротким. Он лишь отдаёт семафор, а работу делает задача.
LCD: меню на двух кнопках
Список пунктов, курсор и выбор. Минимальный интерфейс, из которого вырастает любой прибор.
NVS: сохранение рекордов
Запись только при изменении. Ресурс флеша конечен, и переписывать одно и то же в цикле не стоит.
NeoPixel: шкала уровня
Лента как линейный индикатор: зелёный, жёлтый, красный по мере роста значения.
OLED: график значения
Кольцевой буфер и столбики. Показывает не только текущее значение, но и как оно менялось.
Serial: данные для графика
Числа через запятую в одной строке — формат, который читает построитель графиков.
Serial: журнал в CSV
Заголовок один раз, дальше строки с временем и значениями. Копируется в таблицу как есть.
Автополив
Датчик, порог, насос через реле и обязательная пауза после полива: воде нужно время дойти до датчика.
Антидребезг кнопки
Механический контакт при нажатии дребезжит несколько миллисекунд. Без фильтра одно нажатие считается десятком.
Аппаратный счётчик импульсов (PCNT)
То же, что «Счётчик импульсов на прерывании», но считает не скетч, а блок PCNT: без обработчика, без volatile и без потерь, когда…
Веб-сервер: JSON с показаниями
Машиночитаемый ответ вместо страницы. Откройте «Веб-интерфейс» и наберите /data — отсюда данные забирает что угодно, от скрипта до…
Датчик влажности почвы
Аналоговый вход и обратная шкала: чем влажнее, тем меньше сопротивление и ниже показание.
Игра на реакцию
Случайная задержка, вспышка, замер времени до нажатия. Всё вместе: вывод, ввод, время, случайность.
Кодовый замок
Ввод накапливается в строку и сравнивается с образцом. Сброс по звёздочке.
Метроном
Темп задаётся потенциометром, щелчок — коротким импульсом. Пример совместной работы трёх устройств.
Порог с гистерезисом
Один порог заставляет выход дребезжать у границы. Два порога — нет.
Потенциометр управляет яркостью
Связка вход-выход через map(). Первый пример, где приборы взаимодействуют.
Потенциометр: чтение АЦП
analogRead и 12 бит разрешения. Значение 0…4095 на всю шкалу.
Реле от кнопки с фиксацией
Кнопка без фиксации управляет нагрузкой с фиксацией. Состояние держит программа.
Сглаживание показаний АЦП
Скользящее среднее по кольцевому буферу. Сырой АЦП шумит на пару единиц всегда.
Секундомер
Пуск, стоп, сброс одной кнопкой по длительности нажатия. Состояние — три поля и переход между ними.
Сервопривод по потенциометру
Ручка задаёт угол напрямую. Классический пример пропорционального управления.