Галерея проектов
Любой проект можно открыть, запустить и сделать своей копией. У каждого примера есть разбор: что на схеме, какие библиотеки нужны и что делает код.
Потенциометр: чтение АЦП
analogRead и 12 бит разрешения. Значение 0…4095 на всю шкалу.
Пробуждение кнопкой
Просыпается не по времени, а по внешнему сигналу. Вывод должен быть из числа RTC-выводов.
Проверка выводов
Перебор безопасных выводов с переключением. Помогает найти обрыв в макетке.
Расписание: свет по часам
Включать нагрузку в заданные часы. Проверка написана так, чтобы работать и на промежутке через полночь.
Режим по требованию и экономия
Датчик умеет спать между измерениями. Разница режимов и то, чем за неё платят.
Реле от кнопки с фиксацией
Кнопка без фиксации управляет нагрузкой с фиксацией. Состояние держит программа.
Реле по расписанию
Периодическое включение нагрузки. Реле — единственный способ управлять чем-то мощнее светодиода.
Свободное падение
Падающий датчик не чувствует силы тяжести: длина вектора уходит к нулю. На этом и строится определение падения.
Своя точка доступа
Без роутера: прибор сам раздаёт сеть и отвечает по адресу 192.168.4.1. Так делают первичную настройку.
Сглаживание показаний
Скользящее среднее против дрожания последнего разряда. Заодно видно, чем оно платит за гладкость.
Сглаживание показаний АЦП
Скользящее среднее по кольцевому буферу. Сырой АЦП шумит на пару единиц всегда.
Сдвиговый регистр: восемь выходов из трёх проводов
Аппаратный SPI и 74HC595: восемь светодиодов на трёх проводах. На выходы байт попадает только когда отпущена защёлка — до этого он…
Секундомер
Пуск, стоп, сброс одной кнопкой по длительности нажатия. Состояние — три поля и переход между ними.
Секундомер с сотыми
Четыре разряда под секунды и сотые. Показывать сотые каждый виток нельзя — индикатор не успевает, да и глаз тоже.
Семисегментный: счётчик
Та же микросхема, другой индикатор. Цифры рисует она сама — если включить знакогенератор.
Сервопривод по потенциометру
Ручка задаёт угол напрямую. Классический пример пропорционального управления.
Сервопривод: развёртка
Угол задаётся длительностью импульса. Библиотека прячет это за градусами.
Сеть как источник, часы как резерв
Сеть точнее, но её может не быть. Микросхема всегда на месте, но уходит. Правильная схема — сверять первым вторым.
Сигнал о перегреве
Порог с гистерезисом поверх датчика: светодиод и зуммер срабатывают, когда температура выходит за границу.
Сигнал перегруза
Порог с гистерезисом и усреднением. Заодно — что делает power_down и зачем он нужен на батарее.
Сканер шины I2C
Первое, что запускают, когда датчик на шине не отвечает: перебор всех адресов.
Счётчик импульсов на прерывании
Основа для расходомера, тахометра, счётчика оборотов: считать в обработчике, считать частоту в loop().
Счётчик пересечений луча
Фоторезистор как датчик прохода. Считается фронт, а не уровень, иначе один проход даст сотню срабатываний.
Таймер обратного отсчёта
Минуты и секунды на четырёх разрядах. Кнопка запускает и сбрасывает, а отсчёт идёт по millis, а не по delay.