Назад

Последовательное управление светодиодом с помощью Arduino: отправка команд для мигания

Введение

Добро пожаловать в проект Последовательное управление светодиодом! В этом руководстве вы научитесь управлять светодиодом, подключенным к Arduino Uno, отправляя простые команды через монитор последовательного порта. Это классический проект для начинающих, который объединяет две фундаментальные концепции: связь USART (универсальный синхронный/асинхронный приемопередатчик) и вывод GPIO (ввод/вывод общего назначения). В итоге вы сможете включать и выключать светодиод, вводя “1” или “0” в мониторе последовательного порта, а также запрашивать его состояние с помощью ”?”.

Мы будем использовать Velxio — браузерный симулятор цепей и микроконтроллеров с аналоговой поддержкой точности SPICE. Никакого оборудования не требуется — только ваш браузер! Давайте начнем.

Схема цепи

Схема цепи последовательного управления светодиодом на холсте симулятора Velxio

Цепь невероятно проста. Вам понадобятся всего два компонента:

Детали подключения

  1. Анод светодиода (длинная ножка, вывод A) подключается к выводу 13 Arduino зеленым проводом (#00cc00).
  2. Катод светодиода (короткая ножка, вывод C) подключается к GND Arduino черным проводом (#000000).

Вот и все! Резистор не требуется, так как на выводе 13 Arduino Uno уже есть встроенный токоограничивающий резистор на плате. В реальной цепи вам нужно было бы добавить резистор 220 Ом последовательно со светодиодом, но для симуляции это работает отлично.

Как собрать в Velxio

  1. Откройте пример Последовательное управление светодиодом в Velxio.
  2. Вы увидите Arduino Uno и светодиод, уже размещенные на холсте. Если вы хотите собрать с нуля, используйте выбор компонентов (показан ниже), чтобы добавить Arduino Uno и светодиод.

Модальное окно выбора компонентов Velxio с просмотром деталей по категориям

  1. Нажмите на Arduino Uno, чтобы выбрать его, затем нажмите на вывод 13. Перетащите провод к аноду светодиода (вывод A).
  2. Аналогично подключите катод светодиода (вывод C) к любому выводу GND на Arduino.
  3. Используйте панель инструментов холста для масштабирования и панорамирования для лучшего обзора.

Панель инструментов холста Velxio над окном симуляции

Разбор кода

Исходный код для последовательного управления светодиодом в редакторе Monaco Velxio

Теперь давайте рассмотрим код, который заставляет это работать. Откройте редактор кода в Velxio (вы увидите редактор Monaco с подсветкой синтаксиса).

// Serial LED Control
// Send "1" to turn LED ON, "0" to turn LED OFF.
// Demonstrates Serial input controlling hardware.

const int LED_PIN = 13;

void setup() {
  Serial.begin(9600);
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);

  Serial.println("=========================");
  Serial.println(" Serial LED Controller");
  Serial.println("=========================");
  Serial.println("Send '1' = LED ON");
  Serial.println("Send '0' = LED OFF");
  Serial.println("Send '?' = Status");
  Serial.println();
}

bool ledState = false;

void loop() {
  if (Serial.available() > 0) {
    char cmd = Serial.read();

    switch (cmd) {
      case '1':
        digitalWrite(LED_PIN, HIGH);
        ledState = true;
        Serial.println("[OK] LED is ON");
        break;
      case '0':
        digitalWrite(LED_PIN, LOW);
        ledState = false;
        Serial.println("[OK] LED is OFF");
        break;
      case '?':
        Serial.print("[STATUS] LED is ");
        Serial.println(ledState ? "ON" : "OFF");
        Serial.print("[STATUS] Uptime: ");
        Serial.print(millis() / 1000);
        Serial.println("s");
        break;
      default:
        if (cmd >= 32) { // ignore control chars
          Serial.print("[ERR] Unknown command: '");
          Serial.print(cmd);
          Serial.println("'  (use 1, 0, or ?)");
        }
        break;
    }
  }
}

Как это работает

Запуск симуляции

  1. Нажмите кнопку Запуск на панели инструментов редактора.

Панель инструментов редактора Velxio с элементами управления компиляцией и запуском

  1. Откройте монитор последовательного порта (обычно это кнопка на панели инструментов или отдельная панель).
  2. Введите 1 и нажмите Enter — зеленый светодиод должен загореться.
  3. Введите 0 — светодиод погаснет.
  4. Введите ? — вы увидите состояние и время работы.

Ключевые концепции для студентов

Этот проект обучает нескольким важным концепциям:

Типичные ошибки и советы по отладке

Предлагаемые расширения

После того как вы освоите этот проект, попробуйте следующие улучшения:

  1. Добавьте второй светодиод на вывод 12 и управляйте им с помощью команд ‘2’ и ‘3’.
  2. Используйте ШИМ для управления яркостью: отправьте число от 0 до 255, чтобы установить яркость светодиода с помощью analogWrite().
  3. Добавьте кнопку в качестве ввода: считывайте цифровой вывод и переключайте светодиод при нажатии.
  4. Реализуйте парсер команд, который принимает строки, такие как “ON” или “OFF”, вместо одиночных символов.
  5. Записывайте данные в монитор последовательного порта: выводите показания датчиков или временные метки.

Заключение

Вы только что создали простой, но мощный последовательный контроллер светодиода! Этот проект является основой для бесчисленных проектов IoT и автоматизации, где вы управляете оборудованием с помощью текстовых команд. Velxio позволяет легко экспериментировать без физических компонентов.

Готовы попробовать сами? Откройте пример Последовательное управление светодиодом в Velxio, запустите симуляцию и начните отправлять команды. Удачного творчества!


Поделиться:
David Montero

Автор

David Montero

Creator of Velxio, the open-source circuit and Arduino simulator.

GitHub velxio.dev

Похожие статьи


Предыдущая статья
I2C-сканер с Arduino: найдите каждое устройство на шине
Следующая статья
Последовательное эхо с Arduino: изучаем USART-связь