Галерея проектов
Любой проект можно открыть, запустить и сделать своей копией. У каждого примера есть разбор: что на схеме, какие библиотеки нужны и что делает код.
Arduino Uno: нажал — включил, нажал — выключил
Кнопка без фиксации, а свет с фиксацией. Ловится не уровень на выводе, а момент перехода — иначе светодиод мигает всё время, пока…
Arduino Uno: ночник с гистерезисом
Фоторезистор включает свет в темноте. Порогов два, а не один — иначе на границе освещённости лампа щёлкает по десять раз в секунду…
Arduino Uno: переключатель режимов
Переключатель на три вывода: средний идёт на плату, крайние на землю и питание. От кнопки отличается тем, что положение держит сам…
Амперметр и вольтметр: как их включать
Два прибора, которые путают чаще всего. Амперметр включается в разрыв цепи и меряет то, что через него течёт. Вольтметр — параллел…
Без заземления и без УЗО: что происходит с человеком
Та же неисправность, но розетка без защитного проводника и без дифзащиты. Ток находит единственный доступный путь на землю — через…
Габаритные огни: проводка автомобиля
Кусок настоящей автомобильной схемы: аккумулятор, предохранитель, подрулевой переключатель и две лампы по бортам. Минус берётся не…
ArduinoJson: разбор и сборка
Шестая версия и седьмая различаются в первой же строке. Разбор чужого ответа, проверка ошибок и сборка своего.
RC-фильтр: конденсатор срезает высокие частоты
Генератор даёт меандр — сигнал с бесконечно крутыми фронтами. Резистор и конденсатор пропускают низкое и режут высокое, и на выход…
Автомат освещения: датчик, триггер Шмитта и силовой ключ
Три узла подряд, каждый из которых уже разбирался. Фоторезистор в делителе превращает свет в напряжение; триггер Шмитта сравнивает…
Габариты забыли выключить: когда машина не заведётся
Аккумулятор 60 ампер-часов и две габаритные лампы по 5 ватт. Ток меньше ампера, и кажется, что этого хватит надолго. Схема считает…
Генератор и аккумулятор: откуда берётся ток при работающем моторе
Заглушённый двигатель — питание от аккумулятора, 12,6 В. Заведённый — генератор выдаёт 14,2 В, берёт нагрузку на себя и заряжает а…
Длинный провод: почему в конце линии меньше вольт
Двадцать метров тонкого провода до фонаря в гараже. Сопротивление жилы складывается с сопротивлением лампы, часть напряжения остаё…
Причина перезагрузки
После неожиданного рестарта первое, что нужно знать: питание, сторож или паника.
Сведения о чипе
Ревизия, число ядер, объём флеша, MAC-адрес, свободная память. Первое, что стоит вывести в незнакомом железе.
Слежение за утечкой памяти
Куча, которая только уменьшается, — признак утечки. Здесь она создаётся намеренно, чтобы увидеть, как это выглядит.
Случайные числа
esp_random() берёт энтропию из аппаратного генератора. random() без засева даёт одну и ту же последовательность.
Сторожевой таймер
Зависшую задачу должен кто-то перезапустить. Сторож делает это, если её не гладить вовремя.
Arduino Uno: переменный резистор и монитор порта
Аналоговый вход даёт 0–1023, а не 0–4095: у Uno десять разрядов против двенадцати у ESP32. Числа уходят в монитор порта — и сразу…
Arduino Uno: печать без printf
У ядра Arduino для AVR нет Serial.printf, и код с ESP32 не соберётся. Разобрано, чем его заменяют и как печатать дробные числа и ш…
Arduino Uno: плавная яркость и выводы с ШИМ
analogWrite работает не на всяком выводе: на Uno ШИМ есть только на шести. Пример показывает разницу — на одном светодиоде яркость…
BME280: три величины сразу
Датчик отдаёт не градусы, а сырые числа и заводские поправки — считает библиотека. Пример показывает, что из этого получается.
DHT22: температура и влажность
Однопроводный протокол с собственным таймингом. Библиотека читает датчик не чаще раза в две секунды — быстрее он не отвечает.
FreeRTOS: две задачи
Каждая задача со своим циклом и своей задержкой. loop() при этом остаётся третьей задачей.
FreeRTOS: задачи по ядрам
У ESP32 два ядра. xTaskCreatePinnedToCore прибивает задачу к одному из них — и это видно по xPortGetCoreID().