Добавить в избранное

Arduino Uno для начинающих: плата, первый скетч и что к чему

Чтение ≈ 4 мин

Первое знакомство с Arduino Uno: что на плате, как устроены setup и loop, первый blink, загрузка скетча, Serial-монитор и базовая работа с пинами — чтобы начать делать свои проекты.

Что такое Arduino Uno

Arduino Uno — это отладочная плата на микроконтроллере ATmega328P: маленький компьютер, который выполняет одну программу (скетч) и умеет читать датчики и управлять устройствами — светодиодами, моторами, реле, дисплеями.

На плате:

  • ATmega328P — сам микроконтроллер: 8 бит, 16 МГц, 2 КБ RAM, 32 КБ Flash, 1 КБ EEPROM.
  • 14 цифровых пинов (0–13), из которых 6 могут ШИМ (обозначены ~).
  • 6 аналоговых входов A0–A5 — измеряют напряжение 0–5 В.
  • USB-B — для прошивки и связи с компьютером.
  • Стабилизатор — от 7–12 В через barrel-разъём до 5 В.
  • Пины питания 5V, 3.3V, GND — для периферии.

Скетч: setup и loop

Программа для Arduino называется скетчем и имеет две обязательные функции:

void setup() {
    // выполняется один раз при включении
    pinMode(LED_BUILTIN, OUTPUT);
    Serial.begin(9600);
    Serial.println("Старт!");
}

void loop() {
    // крутится бесконечно
    digitalWrite(LED_BUILTIN, HIGH);
    delay(500);
    digitalWrite(LED_BUILTIN, LOW);
    delay(500);
}

setup — для инициализации: режимы пинов, запуск Serial, настройка периферии. loop — основной цикл: читаем датчики, мигаем, управляем — и всё заново.

Это не настоящая ОС: нет планировщика, delay блокирует всё. Пока идёт delay(500) — процессор ничего не делает. Для параллельной работы используют millis() — безблокировочное время.

Первый скетч: мигание встроенным светодиодом

Это «Hello, world» Arduino — светодиод на пине 13 (он же LED_BUILTIN):

void setup() {
    pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
    digitalWrite(LED_BUILTIN, HIGH);  // включили
    delay(1000);                       // ждём секунду
    digitalWrite(LED_BUILTIN, LOW);   // выключили
    delay(1000);
}

pinMode(pin, режим) настраивает пин: OUTPUT — управляем, INPUT — читаем, INPUT_PULLUP — читаем с подтяжкой к питанию (для кнопок).

Загрузка скетча

В Arduino IDE: выберите плату «Arduino Uno», порт (/dev/ttyUSB0 или COM3), нажмите стрелку «Загрузить». Компилятор превратит ваш код в hex и зальёт во флеш через встроенный bootloader — программатор не нужен.

После загрузки плата перезагрузится и начнёт выполнять setup → loop навсегда, пока не выключите или не зальёте новый скетч.

Serial-монитор: отладка и вывод

Serial — UART-порт через USB к компьютеру. Скорость 9600 — стандарт:

Serial.begin(9600);
Serial.print("текст ");
Serial.println("со строкой");   // + перевод строки
Serial.println(analogRead(A0)); // показать датчик

В IDE — Инструменты → Монитор порта. Это главный способ видеть, что происходит внутри: значения датчиков, точки выполнения, ошибки.

Работа с пинами: читаем кнопку

const int BTN = 2;

void setup() {
    pinMode(BTN, INPUT_PULLUP);   // подтяжка к 5V — кнопка замыкает на GND
    Serial.begin(9600);
}

void loop() {
    if (digitalRead(BTN) == LOW) {   // нажата (LOW из-за подтяжки!)
        Serial.println("Нажата!");
        delay(300);                  // антидребезг
    }
}

Обратите внимание: с INPUT_PULLUP нажатая кнопка читается как LOW — логика инвертирована. Это удобно — не нужен внешний резистор.

Аналоговый вход: читаем датчик

void setup() { Serial.begin(9600); }

void loop() {
    int raw = analogRead(A0);            // 0..1023 для 10-битного АЦП
    float volts = raw * 5.0 / 1023.0;    // перевод в вольты
    Serial.println(volts);
    delay(500);
}

millis() вместо delay — без блокировок

delay — враг реальной работы: он стопорит всё. millis() возвращает миллисекунды с запуска и позволяет делать несколько дел параллельно:

uint32_t ledTimer = 0, sensorTimer = 0;

void loop() {
    uint32_t now = millis();

    if (now - ledTimer >= 500) {         // мигание каждые 500 мс
        ledTimer = now;
        digitalWrite(13, !digitalRead(13));
    }
    if (now - sensorTimer >= 2000) {     // датчик каждые 2 с
        sensorTimer = now;
        readAndSend();
    }
}

Типичные ошибки новичка

  • delay везде — невозможно реагировать на кнопку во время сна.
  • INPUT_PULLUP читают наоборот — LOW значит нажата.
  • Нет резистора на светодиод — сгорит пин или диод; 220–330 Ом.
  • Забыли pinMode — пин по умолчанию вход, digitalWrite не работает как ожидается.
  • Serial.begin забыли — в мониторе тишина.
  • Подключают мотор напрямую к пину — 20 мА максимум на пин; мотору нужен драйвер.

Итог

Arduino Uno — идеальная стартовая плата: простая схема setup/loop, пины для датчиков и исполнителей, Serial для отладки. Начните с мигания, добавьте кнопку, потом датчик — и через день будете собирать собственный гаджет. Главный переход для роста — с delay на millis-паттерн.

Полный первый проект: светофор

Соедините три светодиода через резисторы 220 Ом к пинам 8, 9, 10 (красный, жёлтый, зелёный) и запрограммируйте классический цикл:

const int RED = 8, YELLOW = 9, GREEN = 10;

void setup() {
    pinMode(RED, OUTPUT);
    pinMode(YELLOW, OUTPUT);
    pinMode(GREEN, OUTPUT);
}

void loop() {
    digitalWrite(RED, HIGH);   delay(3000);   // стой
    digitalWrite(YELLOW, HIGH); delay(1000);  // внимание
    digitalWrite(RED, LOW);
    digitalWrite(YELLOW, LOW);
    digitalWrite(GREEN, HIGH); delay(3000);   // иди
    digitalWrite(YELLOW, HIGH); delay(1000);  // приготовься
    digitalWrite(GREEN, LOW);
    digitalWrite(YELLOW, LOW);
}

Команды Serial, которые вы будете использовать постоянно

Serial.begin(9600);          // в setup — скорость монитора порта
Serial.print("x=");          // без перевода строки
Serial.println(x);           // с переводом строки
Serial.printf("t=%.1f\n", t); // форматированная (ESP32; на AVR — sprintf)
Serial.read();               // один байт из порта
Serial.available();          // сколько байт пришло

Монитор порта в IDE (лупа справа вверху) — ваша консоль: смотрите отладочные сообщения и шлёте команды устройству.

Что купить для старта

Минимальный набор за 1000–2000 ₽:

  • Arduino Uno или клон Nano — сама плата.
  • Макетная плата (breadboard) + перемычки — для сборки без пайки.
  • Светодиоды, резисторы 220 Ом/10 кОм, кнопки.
  • Потенциометр, фоторезистор — для аналогового ввода.
  • USB-кабель (обычно в комплекте).

Дальше по мере надобности: сервопривод, дисплей, датчики температуры и расстояния.

Следующие шаги

После светофора и Serial — аналоговый ввод (analogRead потенциометра), ШИМ (analogWrite для плавной яркости), кнопка с антидребезгом, миллисекундные таймеры без delay. Эти базовые навыки — фундамент для любого проекта: от домашней метеостанции до управляемого робота.

Поделиться
Понравился материал?

Комментарии

Добавить комментарий