Галерея проектов
Любой проект можно открыть, запустить и сделать своей копией. У каждого примера есть разбор: что на схеме, какие библиотеки нужны и что делает код.
NTPClient: время из сети
Библиотека поверх UDP: свой пакет, свой разбор, свой период обновления. Отличие от configTime — в том, кто владеет временем.
NVS: счётчик запусков
Значение переживает перезагрузку и снятие питания. Хранится во флеше, а не в оперативной памяти.
Preferences: что переживает перезагрузку
Счётчик запусков в NVS. Три строки кода и одна мысль: сброс платы — это не выключение питания, а для NVS разницы нет вовсе.
Serial: данные для графика
Числа через запятую в одной строке — формат, который читает построитель графиков.
TFT ST7735: цвет и фигуры
Цветной дисплей на аппаратном SPI. Провод DC отличает команду от данных — без него экран останется чёрным.
TM1637: четыре разряда
Индикатор на двух проводах: не I2C, хотя и похоже. Числа, ведущие нули и то, чем показ отличается от вычисления.
TimeLib: время без часов
Библиотека не знает, откуда время, — она его считает. Отсюда её сила и её главная ловушка.
Ёмкостное касание
У ESP32 десять сенсорных выводов. Прикосновение уменьшает показание — порог подбирается на месте.
Авиагоризонт на TFT
Наклон рисуется линией горизонта на цветном экране: земля снизу, небо сверху, и всё это поворачивается вместе с датчиком.
Аппаратный таймер
Прерывание строго по расписанию, независимо от того, чем занят loop(). Точнее любого millis().
Будни и выходные
День недели микросхема хранит отдельным регистром. Пример показывает, как на нём строить недельное расписание.
Второй UART и мост
У ESP32 три аппаратных UART. Второй выводится на любые выводы и работает независимо от отладочного.
Датчик движения
PIR выдаёт готовый цифровой уровень. Вся сложность — в удержании света после последнего движения.
Дополняющий фильтр
Акселерометр шумит, гироскоп уплывает. Одна строка фильтра берёт от каждого лучшее — и объясняет, почему.
Журнал на карту с отметкой времени
Часы и карта вместе: каждая запись получает время, а не «столько-то миллисекунд с включения».
ИК-пульт: приём кода
Приёмник ловит кадр пульта, а разбирает его блок RMT: импульсы по полмиллисекунды скетч поймать не успеет. Нажмите на кружок приём…
Индикатор духоты
Три величины сводятся в одну оценку. Гистерезис в пороге — иначе индикатор мигает на границе.
Метеостанция с журналом
Датчик, часы и карта вместе: раз в минуту строка в файл, имя файла — из даты.
Обратный отсчёт до срока
Разность двух моментов времени: RTClib считает её сама, и переносы через сутки и месяцы считать руками не надо.
Режим по требованию и экономия
Датчик умеет спать между измерениями. Разница режимов и то, чем за неё платят.
Сдвиговый регистр: восемь выходов из трёх проводов
Аппаратный SPI и 74HC595: восемь светодиодов на трёх проводах. На выходы байт попадает только когда отпущена защёлка — до этого он…
Секундомер
Пуск, стоп, сброс одной кнопкой по длительности нажатия. Состояние — три поля и переход между ними.
Секундомер с сотыми
Четыре разряда под секунды и сотые. Показывать сотые каждый виток нельзя — индикатор не успевает, да и глаз тоже.
Счётчик импульсов на прерывании
Основа для расходомера, тахометра, счётчика оборотов: считать в обработчике, считать частоту в loop().