Основы Arduino и C++
setup/loop, переменные, пины, digitalWrite, analogRead, delay
Стартовый курс: от первого мигания светодиодом до уверенной работы с переменными, условиями, циклами и аналоговыми входами. Всё — на виртуальной плате в браузере.
Прогресс раздела0/68 · 0%
- Переменные и типы данных: int, float, bool, StringТипы данных Arduino: int, float, bool и String.20 мин
- Условия if/else: плата принимает решенияУчим Arduino принимать решения: if, else, else if, сравнения и логика && и ||.19 мин
- Циклы for и while: автоматизация повторовЦиклы for и while в Arduino: счётчик цикла, перебор массива из трёх светодиодов, ожидание через millis без delay, do-while и опасность бесконечного цикла.21 мин
- Аналоговые входы: analogRead и потенциометрЧитаем потенциометр через analogRead: АЦП 10 бит и диапазон 0–1023, входы A0–A5, перевод шкалы в 0–255 через map, ШИМ-диммер, фоторезистор LDR и борьба с шумом.22 мин
- switch/case: устройства с несколькими режимамиЛестница if/else на четыре режима разваливается от одной пропущенной else.18 мин
- Конечный автомат: светофор без delay()Светофор на delay() не видит кнопку пешехода 11 секунд из 12.18 мин
- Аналоговый джойстик: две оси и кнопкаМодуль KY-023: оси на A0 и A1, кнопка на D2 с INPUT_PULLUP.17 мин
- Класс String: текст, конкатенация и сравнениеСобираем имя устройства из кусочков, сравниваем команды через ==, режем строку по символам и считаем, во сколько String обходится двум килобайтам SRAM.16 мин
- Матричная клавиатура 4x4: сканируем строки и столбцыШестнадцать кнопок на восьми пинах: принцип матрицы, сканер без библиотеки в двадцать строк, INPUT_PULLUP на столбцах и призраки при трёх нажатых кнопках.17 мин
- Датчик движения PIR: свет включается самHC-SR501 в прихожей: три провода, подстроечники чувствительности и времени, прогрев с ложными тревогами и светильник с millis-удержанием вместо delay.18 мин
- Ультразвуковой HC-SR04: измеряем расстояние сантиметрамиПодключаем HC-SR04 к Arduino: триг-импульс 10 мкс, эхо через pulseIn, таймаут 30 мс, арифметика 58 мкс на сантиметр и три ловушки первого вечера.15 мин
- Парктроник на HC-SR04 и зуммере: ближе — чаще пискПарктроник на HC-SR04 и зуммере: зоны сигнала через map и constrain, millis-гейт вместо delay и защита от воя при включении.16 мин
- Реле и Arduino: управляем мощной нагрузкойУправляем лампой 220 В через модуль реле: катушка 70 мА, клеммы NO/NC/COM, LOW-активный вход, щелчок при загрузке и правила сетевой стороны.17 мин
- DC-мотор через транзистор: включение и реверсТранзистор как рычаг: 4 мА с пина превращаются в 400 мА на моторе, диод гасит выброс обмотки, а реверс собирается на H-мосте из четырёх ключей.16 мин
- random() и randomSeed: случайные числа по-настоящемуrandom(min,max) не выдаёт верхнюю границу, серия после сброса повторяется, а сид с плавающего A0 каждый запуск новый.16 мин
- Игра на реакцию: замеряем скорость откликаСветодиод вспыхивает после случайной паузы, кнопка ловит нажатие, Serial печатает реакцию в миллисекундах.17 мин
- Электронный кубик: random и светодиодная шкалаЭлектронный кубик на Arduino: кнопка, шесть светодиодов и random(1,7).16 мин
- Кнопочное меню: выбираем режимы устройстваКнопочное меню на Arduino: две кнопки листают пункты и подтверждают выбор, светодиод показывает режим.16 мин
- Стробоскоп: регулируем частоту вспышек потенциометромСтробоскоп на Arduino: потенциометр задаёт 1–15 вспышек в секунду, millis-таймер мигает без delay.17 мин
- Кодовый замок: клавиатура 4x4 и светодиодыДоводим сканер матрицы до замка: буфер набора, сравнение с эталоном 2580, зелёный на успех и три тревожных гудка зуммером, таймаут ввода и память фронтов.16 мин
- Итоговый проект: ночник с датчиком света и менюФинал раздела: ночник, светящий плавно по темноте через ШИМ, меню из трёх режимов на двух кнопках и память режима в EEPROM — пять уроков в одном скетче.17 мин
- Подключение пьезозуммера к Arduino: tone(), noTone() и электрика пинаСхема включения зуммера: активный против пассивного, резистор 100 Ом на D8, ток пина 20-30 мА, когда нужен транзистор и потолок tone() 65535 Гц.16 мин
- Мелодия на tone(): массивы нот, темп и живой цикл без delayМелодия на зуммере: массивы частот и длительностей, темп одной константой, щель 20-30 мс между нотами и millis-планировщик, при котором кнопка жива.16 мин
- Звуковая сигнализация: порог, сирена и кнопка сброса тревогиСигнализация на зуммере: порог по фоторезистору с гистерезисом, сирена 400-1200 Гц, дежурный бип на millis и кнопка подтверждения тревоги на D2.17 мин
- Семисегментный индикатор: подключаем и зажигаем цифрыПодключаем семисегментный индикатор к Arduino: сегменты a-g, резистор 220-330 Ом на каждый, общий анод против катода и инверсия, зажигаем 0 и 1.16 мин
- Счётчик на семисегментнике: цифры из массива паттерновСчётчик 0-9 на индикаторе: массив из 10 байт-паттернов, функция showDigit со сдвигом и маской, кнопки плюс/минус с антидребезгом millis и кольцом.16 мин
- Таймер обратного отсчёта: сегментник, зуммер и кнопкиТаймер 9-0 на millis: тик раз в секунду без delay, кнопка старт/стоп, длинное нажатие 900 мс сбрасывает, финальный сигнал tone 1000 Гц на 600 мс.17 мин
- Кнопка на Arduino: digitalRead и INPUT_PULLUPТактовая кнопка на Arduino без внешнего резистора: INPUT_PULLUP, инвертированная логика, debounce по-простому и почему кнопка «срабатывает сама».17 мин
- Датчик наклона KY-002: ловим встряскуДатчик наклона KY-002 на Arduino: шарик замыкает контакты, ловим фронт digitalRead с гейтом 25 мс, счётчик встряхиваний в Serial и LED-вспышка без delay.15 мин
- Геркон и магнит: дверь под контролемГеркон на двери с Arduino: NO и NC контакты, магнит на створке, зазор 10-20 мм, подтяжка пина, метка millis и отсчёт секунд, сколько открыта дверь.16 мин
- Охранная система: наклон, дверь и зуммерОхранная система на Arduino: автомат состояний switch, постановка кнопкой с задержкой 5 с, сирена tone 400-1200 Гц и мигание LED, геркон плюс датчик наклона.17 мин
- Лазерный модуль KY-008: включаем и мигаемПодключение KY-008 к Arduino: роль средней ножки, ток 30 мА на пределе пина, лазер 650 нм и 5 мВт, правила для глаз и мигалка S.O.S.15 мин
- Лазерная шторка: пересечение луча и счётчикЛазер на D12 напротив фоторезистора на A0: analogRead падает при перекрытии, два порога 300 и 400 против дрожи, счёт по фронту пересечения, вывод в Serial.16 мин
- Охранный периметр: луч, тревога и сбросОхрана периметра на лазерном луче: автомат охрана-тревога, фильтр 100 мс против пыли, сирена 1500 и 2200 Гц на millis, мигающий LED, кнопка сброса на D2.17 мин
- Двоичная система: как плата видит числаСтепени двойки и байт 0-255: bitRead() и сдвиг (x >> i) & 1, число с потенциометра A0 через map на шкалу из восьми светодиодов, разбор 0, 5, 127 и 255 по битам.16 мин
- Побитовые операции: И, ИЛИ, сдвиги и флагиШесть операторов над битами на практике: |= ставит флаг, &= ~ сбрасывает, ^= переключает, << сдвигает единицу; байт флагов устройства и бегущий огонёк 1 << i.16 мин
- Двоичные часы: время на восьми светодиодахДвоичные часы на шкале: часы пятью битами, минуты пятёрками, кнопка листает показ, тик на millis(), завод времени через Serial.parseInt и разговор про RTC.17 мин
- Калькулятор: клавиатура 4x4 и LCDКалькулятор на клавиатуре 4x4: цифры складываются в число, A-D задают операцию, итог и деление с остатком на LCD 16x2 по I2C, защита от деления на ноль.16 мин
- Терминал выбора: меню товаров и суммаКасса на клавиатуре 4x4: таблица товаров в массиве, номер добавляет позицию, решётка печатает чек в Serial, итог и светодиод оплачено на D12.16 мин
- Ввод PIN: звёздочки на экране и смена кодаPIN с клавиатуры 4x4: звёздочки на LCD, код в EEPROM с маркером первого запуска, три попытки и блокировка 30 секунд, смена кода с подтверждением.17 мин
- Функции-модули: прототипы, static и читаемый loopЗачем Arduino IDE сама дописывает прототипы функций, что помнит static внутри функции и почему loop из трёх вызовов читается как оглавление большого скетча.16 мин
- Пульт из Serial: switch по букве и число в придачуОднобуквенные команды через Serial.read и switch по символу: фильтр переводов строки, число после буквы добирает parseInt, зажим constrain держит границы.16 мин
- Среднее против выбросов: сумма в long и медиана из трёхДрожь АЦП лечится в три приёма: сумма в long против переполнения, усечённое среднее из десяти чтений и медиана из трёх, через которую выброс пролетает мимо.16 мин
- Тернарный оператор и флаги: выбор в одну строкуТернарный оператор ?: выбирает значение одной строкой: ночник на флагах, инверсия режима кнопкой, связки и или не.16 мин
- Обмен значений: амперсанд и звёздочка без страшных словПочему функция без амперсанда молча не меняет переменные: обмен через ссылку и указатель, третья переменная, арифметический трюк и его граница переполнения.16 мин
- break и continue: выходим раньше, пропускаем лишнееbreak выходит из цикла на первом совпадении, continue отбрасывает мусорный виток: поиск порога в журнале, фильтр пустых ячеек и честный выход из вечного while.16 мин
- int, long и unsigned: переполнение millis через 49 днейbyte, int, long и unsigned long на Uno: сколько вмещает каждый тип, почему millis сворачивается через 49,7 дня и какой таймер переживёт переход через ноль.16 мин
- #define, const и enum: три способа завести константу#define подставляет текст, const проверяет тип, enum строит список состояний.15 мин
- Приведение типов и map(): куда девается дробная частьЦелочисленное деление выбрасывает дробный хвост: почему raw*5/1023 прижимается к нулю, как map режет ступени и когда спасает приведение к float.16 мин
- Функции: параметры, возврат, свои командыСвоя функция с параметрами blink(n, ms) и возвратом readAverage(pin): локальные переменные, прототипы до setup и почему определение ниже loop обычно прощается.16 мин
- Строки: char-массивы против String"текст" — char-массив с нулём в конце, String — класс с методами: где фрагментация кучи валит долгоживущий скетч на Uno и когда String допустим.16 мин
- switch и тернарный оператор: много веток без кашиswitch по числу и символу с case, break и default, тернарный оператор cond ?16 мин
- Таблицы значений: массивы данных вместо формулТаблица сырых кодов АЦП в градусы вместо формулы: линейная интерполяция по 10 точкам, кривая свечи без sin и честный счёт байтов ОЗУ под int-таблицу.16 мин
- Битовые операции: &, |, <<, >> на живых примерахМаски на живых примерах: чтение val & (1 << n), установка и сброс битов, сдвиг как умножение на 2, упаковка двух байтов в int и ловушка знака 1 << 15.16 мин
- const против #define и стиль кода#define подставляет текст до компиляции, const несёт тип и область видимости: ловушка 2*SUM без скобок, CAPS и camelCase, комментарии «почему» и Ctrl+T.15 мин
- Дребезг кнопки: надёжный антидребезг на millis()Почему кнопка дребезжит 5–20 мс и насчитывает лишние нажатия: неблокирующий антидребезг на millis(), lastDebounceTime, интервал 20–50 мс и разбор тупиков.18 мин
- Переключатель на кнопке: toggle и счётчик нажатийВыключатель на кнопке: toggle по фронту нажатия, переменная ledState, счётчик кликов и антидребезг на millis, без которого переключатель работает через раз.17 мин
- analogWrite и ШИМ: меняем яркость светодиодаШИМ на Arduino: analogWrite и duty cycle на пальцах — плавная яркость светодиода, ШИМ-пины 3, 5, 6, 9, 10, 11, частота 490 Гц и разбор тупиков.18 мин
- RGB-светодиод на Arduino: смешиваем цвета из трёх каналовRGB-светодиод на Arduino: подключение общего анода и общего катода, три пина ШИМ 9/10/11, смешивание цветов analogWrite и разбор анодного тупика.17 мин
- Светодиодная шкала: бегущие огни на восьми светодиодахСветодиодная шкала на Arduino: бегущие огни на восьми светодиодах через массив пинов int leds[8] и цикл for — индикатор уровня без копипасты и опечаток.16 мин
- Потенциометр: регулируем яркость светодиода поворотом ручкиПотенциометр на Arduino: analogRead, map() из 0–1023 в 0–255 и плавный диммер светодиода через analogWrite — края ручки, constrain() и ШИМ-пины.17 мин
- Фоторезистор и делитель напряжения: автоматический ночникФоторезистор и делитель напряжения на Arduino: порог света, гистерезис против мигания и автоматический ночник на светодиоде — с расчётом плеч делителя.17 мин
- Термистор NTC: термометр на формуле СтейнхартаТермистор NTC на Arduino: из analogRead в омы, формула Стейнхарта с log() и настоящие градусы Цельсия в Serial — защита от обрыва и тупики float.18 мин
- Пьезозуммер: tone(), noTone() и звуковые сигналыПьезозуммер на Arduino: beep через tone() и noTone(), сирена и двухтональная тревога, частоты от 31 Гц до писка парктроника и резистор 100 Ом на пине.17 мин
- Мелодии на зуммере: массивы нот и длительностейНоты для зуммера кодируем числами: массивы частот и длительностей, проигрыш мелодии циклом for, паузы нулевой нотой и разбор блокировки delay().17 мин
- Массивы в Arduino: паттерны мигания и журнал показанийХраним пять пинов в одном массиве, пишем паттерны мигания и журнал показаний со средним: индексация с нуля, обход for, грабли границ, сглаживание шума.18 мин
- Свои функции в скетче: раскладываем код по полочкамКопипаста трёх светодиодов ужимается в функцию blinkLed(pin, ms): анатомия функций, возвращаемые значения, локальные переменные и честные тупики.18 мин
- Первый скетч: мигаем светодиодом и понимаем setup()/loop()Зажигаем светодиод на Arduino Uno: разбираем setup() и loop() построчно, зачем нужен резистор 220 Ом, три грабли новичка и код сразу в симуляторе.18 мин
Гайды по теме раздела
- analogRead в вольты: переводим код АЦП 0-1023 в напряжениеКак перевести analogRead 0-1023 в вольты: АЦП 10 бит, шаг около 4,9 мВ, формула U = код × 5 / 1023, делитель для 12 В, шум плавающего входа.
- Arduino Mega 2560: проекты и что можно собратьЧто собрать на Arduino Mega 2560: 54 пина, 4 UART, 256 КБ флеш.
- Распиновка Arduino Uno WiFi: Rev2 на ATmega4809 и старая R3 с ESP8266Распиновка Arduino Uno WiFi: Rev2 на ATmega4809 с NINA-W102 и старая R3 ATmega328P+ESP8266.
- Arduino, Raspberry Pi или ESP32: что выбрать для первых проектовЧестное сравнение трёх плат — Arduino, Raspberry Pi и ESP32: разница по железу и цене, что берут для датчиков, что для WiFi и Linux, как новичку выбрать под задачу.
- Цветовая маркировка резисторов: как прочитать номинал по полоскамЦветовая маркировка резисторов: живой декодер полосок, таблица цветов для 4 и 5 колец и тренажёр, который научит читать номинал без шпаргалки.
- Подключение реле к Arduino: активный LOW, JD-VCC и нагрузка 220 ВКак подключить модуль реле к Arduino: активный LOW и щелчок при включении, перемычка JD-VCC, ток катушки 70-90 мА, клеммы COM-NO-NC и правила работы с 220 В.
- Парктроник на Arduino: HC-SR04 и зуммерПарктроник на Arduino своими руками: HC-SR04 меряет дистанцию, зуммер пищит чаще и выше у препятствия, ближе 20 см — сплошной тон.
- Ночник на Arduino: фоторезистор и плавное включение светаНочник на фоторезисторе и Arduino: делитель напряжения, порог темноты, гистерезис 150 единиц и плавный разгон ШИМ.
- Эмулятор фоторезистора онлайн: LDR на стенде без платыЭмулятор фоторезистора в браузере: ползунок света 0-100 %, показания analogRead 0-1023 и пороги «темно/светло» для ночника.
- Эмулятор RGB-светодиода онлайн: подберите цвета без платыЭмулятор RGB-светодиода в браузере: смешение трёх каналов 0-255, палитра оттенков и «дыхание» до пайки.
- Датчик пламени на Arduino: KY-026 и сигнализацияДатчик пламени KY-026 на Arduino: аналоговый выход 0-1023, порог срабатывания, сирена через tone() и светодиод.
- Датчик влажности почвы на Arduino: подключение и поливЁмкостный датчик влажности почвы v1.2 на Arduino: подключение к A0, калибровка по воздуху и воде, порог полива с гистерезисом, скетч и проверка в симуляторе.
- Проекты на Arduino для начинающих — часть 2: 10 новых сборокЧто можно сделать на Arduino: 10 новых проектов для начинающих — автополив, подсветка ПК, таймер-куб, протечка, велокомпьютер.
- Робот на Arduino своими руками: машинка для начинающихКак собрать машинку на Arduino: платформа с двумя моторами, драйвер L298N или TB6612, питание от 18650, цены деталей и скетч-заготовка первого заезда.
- Мелодия Марио на Arduino: ноты для зуммера и tone()Мелодия Марио на Arduino через tone(): массив нот и длительностей, частоты нот для пьезозуммера, паузы и noTone.
- Светофор на Arduino: проект для новичка в симулятореСветофор на Arduino для новичка в симуляторе: три светодиода, фазы на millis() без delay(), таблица таймингов с токами и честная разница эмуляции и макетки.
- Аквариум на Arduino: термометр и автокормушка без риска для рыбАквариум на Arduino в симуляторе: DS18B20 в воде, реле нагревателя с гистерезисом 1 °C, кормушка на серво по расписанию — логика без риска для рыб.
- Тест кнопки в симуляторе Arduino: проверяем без платыПроверка кнопки без Arduino: схема с INPUT_PULLUP в браузерном симуляторе, тестовый скетч, пять проверок за десять минут и что покажет только живое железо.