Галерея проектов
Любой проект можно открыть, запустить и сделать своей копией. У каждого примера есть разбор: что на схеме, какие библиотеки нужны и что делает код.
Стабилитрон: ровные 5 вольт при скачущем входе
Стабилитрон включён навстречу току и работает в пробое: пока через него идёт ток, напряжение на нём держится равным паспортному. В…
Счётчик импульсов на прерывании
Основа для расходомера, тахометра, счётчика оборотов: считать в обработчике, считать частоту в loop().
Тара и отрицательный вес
Ноль весов — это не ноль датчика. Что происходит, когда груз снимают после тары, и почему это нормально.
Точка росы и запотевание
Точку росы датчик не измеряет — её считают из температуры и влажности. Формула Магнуса и проверка «стекло запотеет».
Удвоитель напряжения: два диода и два конденсатора
Схема Латура работает в два такта: в отрицательную полуволну заряжается первый конденсатор до амплитуды, в положительную к нему до…
Уровень: крен и тангаж
Углы считаются из вектора силы тяжести — двумя арктангенсами. Покрутите наклон в свойствах датчика и смотрите на пузырёк.
Фоторезистор: уровень освещённости
Сопротивление падает на свету. Абсолютных единиц нет — нужна калибровка по крайним точкам.
Часы на семисегментном
Часы, минуты и секунды с мигающими точками. Точка — старший разряд байта, и включается она отдельно от цифры.
Часы целиком: сеть, резерв, настройки, конфиг
Все пять библиотек вместе: время из сети, резерв в микросхеме, счётчик сверок в 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-фильтр: конденсатор срезает высокие частоты
Генератор даёт меандр — сигнал с бесконечно крутыми фронтами. Резистор и конденсатор пропускают низкое и режут высокое, и на выход…
Вольт-амперная характеристика: снимаем кривую сами
Прибор в режиме XY рисует зависимость тока от напряжения: по горизонтали напряжение на детали, по вертикали — напряжение на токово…
Высота по давлению
Барометрическая высота: считается от давления на уровне моря, и ошибка в этом одном числе смещает всю шкалу.
Делитель под нагрузкой: почему он «проседает»
Делитель держит расчётное напряжение только пока ток нагрузки мал против тока самого делителя. Без нагрузки U = E·R₂/(R₁+R₂) = 12·…
Заряд конденсатора: откуда берётся постоянная времени
Выключатель, резистор и конденсатор. При замыкании напряжение на конденсаторе растёт не сразу и не по прямой, а по экспоненте. За…
Интегрирующая цепь: меандр становится треугольником
Если постоянная времени много больше периода сигнала (τ ≫ T), конденсатор не успевает зарядиться и его напряжение растёт почти лин…