Обратный отсчёт до срока — Разность двух моментов времени: RTClib считает её сама, и переносы через сутки и месяцы считать руками не надо.
Будни и выходные — День недели микросхема хранит отдельным регистром. Пример показывает, как на нём строить недельное расписание.
BME280: три величины сразу — Датчик отдаёт не градусы, а сырые числа и заводские поправки — считает библиотека. Пример показывает, что из этого получается.
Высота по давлению — Барометрическая высота: считается от давления на уровне моря, и ошибка в этом одном числе смещает всю шкалу.
Точка росы и запотевание — Точку росы датчик не измеряет — её считают из температуры и влажности. Формула Магнуса и проверка «стекло запотеет».
Барометр: тенденция за три часа — Погоду предсказывает не давление, а его изменение. Кольцевой буфер и разность с отсчётом трёхчасовой давности.
Индикатор духоты — Три величины сводятся в одну оценку. Гистерезис в пороге — иначе индикатор мигает на границе.
Метеостанция с журналом — Датчик, часы и карта вместе: раз в минуту строка в файл, имя файла — из даты.
Сглаживание показаний — Скользящее среднее против дрожания последнего разряда. Заодно видно, чем оно платит за гладкость.
MPU6050: шесть чисел — Три ускорения, три угловые скорости и температура кристалла. И первое, о что все спотыкаются: датчик после включения спит.
Уровень: крен и тангаж — Углы считаются из вектора силы тяжести — двумя арктангенсами. Покрутите наклон в свойствах датчика и смотрите на пузырёк.
Свободное падение — Падающий датчик не чувствует силы тяжести: длина вектора уходит к нулю. На этом и строится определение падения.
Какой стороной вверх — Шесть положений кубика из знаков трёх ускорений. Простая задача, на которой видно, зачем нужен порог уверенности.
Дополняющий фильтр — Акселерометр шумит, гироскоп уплывает. Одна строка фильтра берёт от каждого лучшее — и объясняет, почему.
Шагомер — Шаг — это всплеск длины вектора. Считать всплески без гистерезиса и паузы бесполезно: один шаг насчитается пятью.
Авиагоризонт на TFT — Наклон рисуется линией горизонта на цветном экране: земля снизу, небо сверху, и всё это поворачивается вместе с датчиком.
Калибровка нуля — У лежащего неподвижно датчика гироскоп показывает не ноль. Смещение снимают один раз при старте и вычитают дальше.
Часы на семисегментном — Часы, минуты и секунды с мигающими точками. Точка — старший разряд байта, и включается она отдельно от цифры.
Термометр на индикаторе — Показать -3.7°C на семисегментном индикаторе: знак, десятые и буква. Буквы C знакогенератор не знает — значит рисуем сегментами сами.
Часы с мигающим двоеточием — Отдельного двоеточия у индикатора нет: это старший разряд второй цифры. Отсюда и способ им мигать.
Термометр с буквой — Показать -3.7C на четырёх разрядах: знак, десятые и буква. Сегменты приходится задавать руками.
Яркость и ночной режим — Восемь ступеней яркости и настоящее гашение. Ночью индикатор в спальне светит как прожектор — отсюда и пример.
TimeLib и часы: кто кого сверяет — setSyncProvider: библиотека сама раз в пять минут спрашивает время у микросхемы. Одна строка вместо ручной сверки.
Сеть как источник, часы как резерв — Сеть точнее, но её может не быть. Микросхема всегда на месте, но уходит. Правильная схема — сверять первым вторым.
Электронный кубик: встряхни — и выпадет число — Акселерометр в покое показывает ровно 1 g — это притяжение Земли. Встряхнули — модуль ускорения скачет выше полутора g, грани на матрице мел…
Будильник-рассвет: DS3231 будит светом NeoPixel — За полчаса до звонка лента медленно разгорается от тёмно-красного к тёплому белому — просыпаться на свет легче, чем на звук. В показательном…
Сейф с кодом: клавиатура, сервозамок и OLED — Код набирается на клавиатуре, «#» — ввод, «*» — стереть. Верный код отводит ригель сервоприводом на пять секунд. Три ошибки подряд — клавиат…
Arduino Uno: часы реального времени — millis считает от включения и обнуляется при сбросе. Часам нужна микросхема со своей батарейкой — и она же объясняет, зачем в схеме появляет…
Arduino Uno: давление, влажность и температура — Три величины с одного датчика по двум проводам. Показания уходят в монитор порта в формате плоттера — вкладка График строит по ним три ряда…
Метеостанция с тенденцией давления — Часы, температура, влажность и давление на одном экране — и стрелка, куда идёт давление за последний час. Три устройства на одной шине I2C…
Будильник на DS3231 и энкодере — Время на индикаторе TM1637, будильник настраивается одной ручкой: нажатие — часы, минуты, выход; долгое нажатие — включить или выключить. Вр…
Змейка на OLED и энкодере — Классическая змейка на экране 128×64: ручка поворачивает направо и налево, нажатие — пауза. Змейка хранится кольцом по байту на клетку — на…
Автополив и фитолампа на Arduino Nano — Настоящее устройство для подоконника: фитолампа 230 В по расписанию и два насоса 12 В, каждый со своим периодом полива. Часы DS3231, датчик…
Автополив и фитолампа на ESP32 с веб-админкой — То же устройство, что на Arduino Nano — фитолампа 230 В по расписанию и два насоса 12 В со своим периодом полива, — но с веб-админкой в прош…