Робототехника · Микроконтроллеры · 7 класс
Arduino Uno: первая программа
Соберите плату сами, подключите USB, загрузите Blink — и в чём секрет 13-го вывода?
Ситуация
Для первого робота в кружке нужна Arduino Uno. Но сначала соберите плату сами: от голой платы расставьте детали, припаяйте их, подключите USB и загрузите первую программу — Blink. Потом захочется плавно менять яркость, но светодиод на 13-м выводе не гаснет плавно, а только «включается и выключается». Почему? Какие выводы умеют ШИМ? И что будет, если поставить конденсатор наоборот или замкнуть 5V на GND?
Тема
Arduino Uno: сборка платы и первая программа. От голой платы до работающей Arduino: расставляем детали, паяем, подключаем USB, Blink и Fade
Ключевые понятия
- Микроконтроллер
- Выводы и ШИМ
- setup() / loop()
Формулы
Период Blink: сумма `delay()` — 1000 + 1000 мс = 2 с, частота 0,5 Гц.
ШИМ, коэффициент заполнения: `analogWrite(pin, v)` — на частоте 490 Гц светодиод горит часть времени; глаз видит среднюю яркость.
Ток внешнего светодиода: вывод даёт ≈ 5 В, у него собственное выходное сопротивление ≈ 25 Ом; предел для вывода — 40 мА, норма — 20 мА.
При ШИМ средний ток (и яркость) пропорционален коэффициенту заполнения.
Теория
Из чего состоит плата
Сердце Arduino Uno R3 — микроконтроллер ATmega328P (корпус DIP с 28 ножками, стоит в панельке): с кварцем 16 МГц он делает 16 миллионов шагов в секунду. ATmega16U2 — второй чип, который общается с компьютером по USB. Стабилизаторы 5 В и 3,3 В готовят питание, самовосстанавливающийся предохранитель (polyfuse) на 500 мА защищает USB-порт от короткого замыкания. Чёрные панели по краям — выводы: DIGITAL 0–13, ANALOG IN A0–A5, POWER (5V, 3V3, GND, VIN).
Порядок сборки
На заводе сначала мелкие SMD-детали (чипы, резисторы, конденсаторы) кладут на пасту и в печи при 245 °C они «плывут» и припаиваются. Затем крупные выводные (THT) детали — гнёзда, панели, конденсаторы, кварц, панельку DIP — вставляют в отверстия и паяют снизу. Непропаянная ножка — нет контакта: если подключить USB к такой плате, ничего не загорится.
setup() и loop()
В каждой программе Arduino две функции: setup() выполняется один раз (настройка выводов), loop() повторяется бесконечно. `pinMode(13, OUTPUT)` делает вывод выходом, `digitalWrite(13, HIGH)` подаёт на него 5 В (LOW — 0 В), `delay(1000)` останавливает программу на 1000 мс. К 13-му выводу подключён светодиод L на плате — поэтому Blink работает без внешних деталей.
ШИМ: почему 13-й вывод не гаснет плавно
`analogWrite(pin, v)` не выдаёт аналоговое напряжение — он включает и выключает вывод ≈ 490 раз в секунду, доля включённого времени . Это ШИМ (широтно-импульсная модуляция); глаз видит среднюю яркость. На Uno ШИМ есть только на выводах со знаком ~: 3, 5, 6, 9, 10, 11. На другом выводе (и на 13-м) `analogWrite` работает как обычный ключ: — LOW, — HIGH. Поэтому Fade на 13-м выводе не плавный, а резкий.
Внешний светодиод и предел вывода
Вывод — маленький источник: ≈ 5 В и внутреннее сопротивление ≈ 25 Ом. Светодиоду нужен резистор: с 220 Ом ток ≈ 12–13 мА. Без резистора ток превышает 100 мА — абсолютный предел для вывода 40 мА: чип нагревается и выходит из строя (дым — кристалл сгорел). Если поставить конденсатор наоборот, электролит нагреется, крышка вздуется и лопнет. При замыкании 5V–GND самовосстанавливающийся предохранитель размыкает ток; уберёте замыкание — он остынет и снова включится.
О модели
Программа работает на небольшой части Arduino C (int/float, if, for, while, функции, Serial). `int` 16-битный — если превысит 32 767, станет отрицательным, как на настоящей плате. Время идёт по часам симуляции: на скорости 1× Blink идёт в настоящих секундах. Пайка, нагрев и дым упрощены: настоящий чип может недолго выдержать лишний ток, но срок его жизни сократится.
Знаете ли вы?
- Arduino начали в 2005 году в итальянском городе Ивреа (Interaction Design Institute Ivrea) как дешёвую учебную плату для студентов; название взято от кафе «Bar di Re Arduino» в Ивреа.
- У ATmega328P всего 2 КБ оперативной памяти (SRAM) и 32 КБ памяти программ — в миллионы раз меньше, чем у обычного смартфона, но для робота хватает, потому что он выполняет 16 миллионов команд в секунду.
Что внутри эксперимента
Настоящая плата в рисованной изометрии: вы поворачиваете её, ставите детали, собираете цепь, пишете и загружаете код — ток и напряжение считаются сразу, а при ошибке деталь сгорает. Внутри — задания, теория, тест и экскурсия.