Галерея проектов
Любой проект можно открыть, запустить и сделать своей копией. У каждого примера есть разбор: что на схеме, какие библиотеки нужны и что делает код.
Часы на семисегментном
Часы, минуты и секунды с мигающими точками. Точка — старший разряд байта, и включается она отдельно от цифры.
Часы целиком: сеть, резерв, настройки, конфиг
Все пять библиотек вместе: время из сети, резерв в микросхеме, счётчик сверок в NVS, настройки конфигом JSON, экран.
ШИМ и RC: как из прямоугольника получить постоянное напряжение
Среднее значение прямоугольного сигнала равно U_ср = U_выс · D, где D — скважность. RC-цепь с постоянной времени много больше пери…
Шагомер
Шаг — это всплеск длины вектора. Считать всплески без гистерезиса и паузы бесполезно: один шаг насчитается пятью.
Яркость и ночной режим
Восемь ступеней яркости и настоящее гашение. Ночью индикатор в спальне светит как прожектор — отсюда и пример.
Arduino Uno: датчик DHT22 на одном проводе
Температура и влажность по единственной линии данных. Датчик медленный: чаще чем раз в две секунды его спрашивать бесполезно, и эт…
Arduino Uno: ручка яркости
Переменный резистор крутит яркость светодиода. Между входом и выходом стоит map: у входа 1024 значения, у ШИМ — 256, и переводить…
Arduino Uno: светофор на состояниях
Три светодиода и четыре фазы. Написано машиной состояний, а не цепочкой delay — потому что светофор, который нельзя переключить кн…
Arduino Uno: сколько осталось оперативной памяти
У ATmega328P две тысячи байт ОЗУ. Кончается она молча: ни ошибки, ни перезагрузки — плата просто начинает вести себя странно, и бе…
HX711: сырые отсчёты
Двадцать четыре разряда тактами и признак готовности на линии данных. С этого начинается всё остальное.
NVS: настройки прибора
Строки и числа под именами. Команды из Serial меняют настройки, и они остаются после перезапуска.
RC-фильтр: конденсатор срезает высокие частоты
Генератор даёт меандр — сигнал с бесконечно крутыми фронтами. Резистор и конденсатор пропускают низкое и режут высокое, и на выход…
Высота по давлению
Барометрическая высота: считается от давления на уровне моря, и ошибка в этом одном числе смещает всю шкалу.
Делитель под нагрузкой: почему он «проседает»
Делитель держит расчётное напряжение только пока ток нагрузки мал против тока самого делителя. Без нагрузки U = E·R₂/(R₁+R₂) = 12·…
Заряд конденсатора: откуда берётся постоянная времени
Выключатель, резистор и конденсатор. При замыкании напряжение на конденсаторе растёт не сразу и не по прямой, а по экспоненте. За…
Какой стороной вверх
Шесть положений кубика из знаков трёх ускорений. Простая задача, на которой видно, зачем нужен порог уверенности.
Калибровка нуля
У лежащего неподвижно датчика гироскоп показывает не ноль. Смещение снимают один раз при старте и вычитают дальше.
Калибровка: из отсчётов в граммы
Коэффициент подбирается известным грузом один раз и записывается в скетч. Без него на экране будут отсчёты, а не вес.
Кнопка и подтягивающий резистор
Вход контроллера высокоомный: не подключённый ни к чему, он ловит наводки и читает случайные значения. Подтягивающий резистор зада…
Колебательный контур: энергия ходит туда-обратно
Конденсатор и катушка обмениваются энергией: заряд перетекает в ток, ток — обратно в заряд. Частота этих колебаний равна f = 1/(2π…
Кухонные весы
Вес на индикаторе с округлением до грамма и подавлением дрожания последнего разряда.
Матрица R-2R: цифра превращается в напряжение
Резисторный ЦАП собирается всего из двух номиналов — R и 2R. Каждый следующий разряд весит вдвое меньше предыдущего, и выход равен…
Мультивибратор: схема, которая мигает сама
Два транзистора закрывают друг друга по очереди через конденсаторы. Пока одно плечо открыто, конденсатор второго перезаряжается че…
Полевой ключ: затвор не берёт тока вовсе
У полевого транзистора затвор изолирован: он управляется напряжением, а не током. Ниже порога канала нет совсем, выше — транзистор…