Fanlab

Робототехника · Микроконтроллеры · 7 класс

Arduino Uno: первая программа

Соберите плату сами, подключите USB, загрузите Blink — и в чём секрет 13-го вывода?

Открыть эксперимент

Ситуация

Для первого робота в кружке нужна Arduino Uno. Но сначала соберите плату сами: от голой платы расставьте детали, припаяйте их, подключите USB и загрузите первую программу — Blink. Потом захочется плавно менять яркость, но светодиод на 13-м выводе не гаснет плавно, а только «включается и выключается». Почему? Какие выводы умеют ШИМ? И что будет, если поставить конденсатор наоборот или замкнуть 5V на GND?

Тема

Arduino Uno: сборка платы и первая программа. От голой платы до работающей Arduino: расставляем детали, паяем, подключаем USB, Blink и Fade

Ключевые понятия

  • Микроконтроллер
  • Выводы и ШИМ
  • setup() / loop()

Формулы

T=tвкл+tвыкл

Период Blink: сумма `delay()` — 1000 + 1000 мс = 2 с, частота 0,5 Гц.

D=tвклT=v255

ШИМ, коэффициент заполнения: `analogWrite(pin, v)` — на частоте 490 Гц светодиод горит v/255 часть времени; глаз видит среднюю яркость.

I=5В−ULEDR+Rpin

Ток внешнего светодиода: вывод даёт ≈ 5 В, у него собственное выходное сопротивление ≈ 25 Ом; предел для вывода — 40 мА, норма — 20 мА.

Iср=D⋅I

При ШИМ средний ток (и яркость) пропорционален коэффициенту заполнения.

Теория

Из чего состоит плата

Сердце 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 раз в секунду, доля включённого времени v/255. Это ШИМ (широтно-импульсная модуляция); глаз видит среднюю яркость. На Uno ШИМ есть только на выводах со знаком ~: 3, 5, 6, 9, 10, 11. На другом выводе (и на 13-м) `analogWrite` работает как обычный ключ: v<128 — LOW, v≥128 — 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 миллионов команд в секунду.

Что внутри эксперимента

Настоящая плата в рисованной изометрии: вы поворачиваете её, ставите детали, собираете цепь, пишете и загружаете код — ток и напряжение считаются сразу, а при ошибке деталь сгорает. Внутри — задания, теория, тест и экскурсия.