Галерея проектов
Любой проект можно открыть, запустить и сделать своей копией. У каждого примера есть разбор: что на схеме, какие библиотеки нужны и что делает код.
Звук: сирена
Частота меняется непрерывно. Тот же приём, что у плавной яркости, но для звука.
Матрица 8×8: первая точка
Микросхема после подачи питания выключена, и это первое, обо что спотыкаются. Дальше — точки, строки и вся матрица.
Мигалка на двух транзисторах: попеременно
Тот же мультивибратор, но с двумя светодиодами в коллекторах: они загораются по очереди. Период каждой половины равен t ≈ 0,7·R·C…
Параллельное соединение: складываются проводимости
При параллельном включении на всех резисторах одно напряжение, а токи складываются: 1/R = 1/R₁ + 1/R₂. Для двух резисторов удобнее…
Парктроник
Чем ближе препятствие, тем чаще писк. Расстояние превращается в период — приём, который работает и без дисплея.
Последовательное соединение: почему лампы горят вполнакала
Те же две лампы, но включённые друг за другом. Двенадцать вольт делятся между ними пополам, ток падает вдвое, а мощность каждой…
Пьезоизлучатель от вывода: громкость и меандр
Пьезоизлучателю не нужен усилитель: он высокоомный и работает от напряжения, а не от тока. Вывод контроллера подаёт на него меандр…
Регулятор тембра: срезаем верх поворотом ручки
Простейший регулятор высоких частот — потенциометр, включённый реостатом, и конденсатор на землю. Вместе они дают фильтр нижних ча…
Сенсорный выключатель
Касание вместо кнопки, с той же логикой фронта. Механики нет, дребезга тоже.
Сервопривод: развёртка
Угол задаётся длительностью импульса. Библиотека прячет это за градусами.
Таймер обратного отсчёта
Минуты и секунды на четырёх разрядах. Кнопка запускает и сбрасывает, а отсчёт идёт по millis, а не по delay.
Термометр на индикаторе
Показать -3.7°C на семисегментном индикаторе: знак, десятые и буква. Буквы C знакогенератор не знает — значит рисуем сегментами са…
Транзистор как ключ: слабый ток управляет мотором
Фоторезистор даёт микроамперы, мотору нужны сотни миллиампер. Между ними — транзистор: ток базы в сто раз меньше тока коллектора…
Ультразвук: медианный фильтр
Одиночный ложный отсчёт у сонара — норма. Медиана из трёх его выбрасывает, среднее — нет.
Частота процессора и потребление
Понижение частоты снижает ток. Видно и по времени выполнения одной и той же работы.
Arduino Uno: команды из монитора порта
Плата слушает строки и выполняет команды. Разбор без класса String: на двух килобайтах памяти его склейки в цикле кончаются плохо.
Arduino Uno: печать без printf
У ядра Arduino для AVR нет Serial.printf, и код с ESP32 не соберётся. Разобрано, чем его заменяют и как печатать дробные числа и ш…
Arduino Uno: сглаживание показаний
Показания аналогового входа дрожат в последних разрядах всегда. Скользящее среднее убирает дрожь, и на графике сразу видно, чем за…
Arduino Uno: таймер 1 ровно раз в секунду
millis плюс проверка в цикле дают приблизительный интервал. Таймер в режиме CTC даёт точный — и срабатывает, даже когда цикл занят…
FreeRTOS: очередь между задачами
Правильный способ передать данные из задачи в задачу. Общая переменная без защиты рано или поздно подведёт.
OLED: крупные цифры
Перерисовка кадра целиком: очистка, вывод, display(). Так делается любая динамика.
Preferences: настройки прибора
Несколько значений разных типов, значения по умолчанию и сброс к заводским. Плюс то, о чём молчат: запись изнашивает память.
TimeLib и часы: кто кого сверяет
setSyncProvider: библиотека сама раз в пять минут спрашивает время у микросхемы. Одна строка вместо ручной сверки.
Автополив
Датчик, порог, насос через реле и обязательная пауза после полива: воде нужно время дойти до датчика.