Галерея проектов
Любой проект можно открыть, запустить и сделать своей копией. У каждого примера есть разбор: что на схеме, какие библиотеки нужны и что делает код.
Аппаратный счётчик импульсов (PCNT)
То же, что «Счётчик импульсов на прерывании», но считает не скетч, а блок PCNT: без обработчика, без volatile и без потерь, когда…
Барометр: тенденция за три часа
Погоду предсказывает не давление, а его изменение. Кольцевой буфер и разность с отсчётом трёхчасовой давности.
Будильник: раз в минуту
Будильник внутри микросхемы: она сама сравнивает время и поднимает признак. Плата может в это время спать.
Глубокий сон по таймеру
Основной режим для приборов на батарее: проснуться, замерить, отправить, уснуть. После пробуждения setup() начинается заново.
Два канала: сдвиг фазы и фигура Лиссажу
RC-цепь не только уменьшает амплитуду, но и задерживает сигнал по фазе: φ = −arctg(2π·f·R·C). Ровно на частоте среза сдвиг равен 4…
Диодный мост: нижняя полуволна переворачивается вверх
Четыре диода включены так, что при любом знаке входного напряжения ток через нагрузку идёт в одну сторону. На графике нижняя полув…
Длинный провод: почему в конце линии меньше вольт
Двадцать метров тонкого провода до фонаря в гараже. Сопротивление жилы складывается с сопротивлением лампы, часть напряжения остаё…
Жизнь на матрице
Игра «Жизнь» на поле 8×8 с замыканием краёв. Считается в двух буферах — иначе клетки видят соседей уже нового поколения.
Защитный диод: куда девать ток обмотки
При размыкании цепи ток в катушке не может исчезнуть мгновенно, и напряжение на ней взлетает по закону u = L·di/dt — тем выше, чем…
Измерение напряжения делителем
АЦП принимает максимум 3.3 В. Делитель расширяет диапазон, а коэффициент возвращается в коде.
Кодовый замок
Ввод накапливается в строку и сравнивается с образцом. Сброс по звёздочке.
Конфиг в JSON и в памяти
Настройки хранятся строкой JSON в NVS: одно поле вместо десяти ключей, и добавить новое можно не ломая старое.
Матрица: рисунок и мигание
Картинка хранится восемью байтами — по байту на строку. Так её удобно и рисовать в коде, и отправлять.
Матричная клавиатура 4x4
Шестнадцать кнопок на восьми выводах. Сканирование по строкам и чтение столбцов.
Минимум и максимум за сеанс
Накопление статистики без массива: достаточно двух переменных и первого замера.
Мотор от вывода: почему нужен ключ
Мотору нужны сотни миллиампер, вывод отдаёт сорок. Разница в десять раз, и закрыть её нельзя ничем, кроме усилителя тока: транзист…
На сколько хватит аккумулятора: расчёт времени работы
Аккумулятор на 7 ампер-часов и лампа на 12 ватт. Ампер-часы с наклейки делить на ток нельзя дважды: во-первых, свинцовому аккумуля…
Несколько задач по времени
Три независимых периода в одном loop(). Каждая задача помнит своё время последнего запуска.
Ночник
Темнее — ярче. Обратная пропорция и гистерезис, чтобы лампа не моргала на границе.
Однополупериодный выпрямитель: диод как клапан
Источник переменного напряжения и один диод. Диод пропускает ток в одну сторону, поэтому от синусоиды остаётся только верхняя поло…
Порог с гистерезисом
Один порог заставляет выход дребезжать у границы. Два порога — нет.
Причина перезагрузки
После неожиданного рестарта первое, что нужно знать: питание, сторож или паника.
Расписание: свет по часам
Включать нагрузку в заданные часы. Проверка написана так, чтобы работать и на промежутке через полночь.
Реле: слабая кнопка управляет сильной нагрузкой
Кнопка в салоне не рассчитана на ток звукового сигнала. Поэтому кнопка включает катушку реле — тридцать миллиампер, — а контакт ре…