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

Цепь невероятно проста. Вам понадобятся всего два компонента:
- Arduino Uno (мозг)
- Зеленый светодиод (выходное устройство)
Детали подключения
- Анод светодиода (длинная ножка, вывод A) подключается к выводу 13 Arduino зеленым проводом (
#00cc00). - Катод светодиода (короткая ножка, вывод C) подключается к GND Arduino черным проводом (
#000000).
Вот и все! Резистор не требуется, так как на выводе 13 Arduino Uno уже есть встроенный токоограничивающий резистор на плате. В реальной цепи вам нужно было бы добавить резистор 220 Ом последовательно со светодиодом, но для симуляции это работает отлично.
Как собрать в Velxio
- Откройте пример Последовательное управление светодиодом в Velxio.
- Вы увидите Arduino Uno и светодиод, уже размещенные на холсте. Если вы хотите собрать с нуля, используйте выбор компонентов (показан ниже), чтобы добавить Arduino Uno и светодиод.

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

Разбор кода

Теперь давайте рассмотрим код, который заставляет это работать. Откройте редактор кода в 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;
}
}
}
Как это работает
const int LED_PIN = 13;– Мы определяем вывод светодиода как 13 (встроенный вывод светодиода на Arduino Uno).setup()– Инициализирует последовательную связь со скоростью 9600 бод, устанавливает вывод светодиода как выход и выводит приветственное сообщение.loop()– Проверяет, есть ли данные на последовательном порту. Если да, считывает один символ и обрабатывает его с помощью оператораswitch.'1': Включает светодиод (digitalWrite(LED_PIN, HIGH)) и обновляетledState.'0': Выключает светодиод (digitalWrite(LED_PIN, LOW)).'?': Выводит текущее состояние светодиода и время работы системы в секундах.- Любой другой печатный символ выводит сообщение об ошибке.
Запуск симуляции
- Нажмите кнопку Запуск на панели инструментов редактора.

- Откройте монитор последовательного порта (обычно это кнопка на панели инструментов или отдельная панель).
- Введите
1и нажмите Enter — зеленый светодиод должен загореться. - Введите
0— светодиод погаснет. - Введите
?— вы увидите состояние и время работы.
Ключевые концепции для студентов
Этот проект обучает нескольким важным концепциям:
- Последовательная связь: Arduino общается с вашим компьютером через USART.
Serial.begin(9600)устанавливает скорость передачи данных (бит в секунду). - Вывод GPIO:
pinMode()иdigitalWrite()управляют цифровыми выводами. - Переменные состояния:
ledStateотслеживает текущее состояние светодиода, что позволяет команде состояния работать. - Разбор ввода: Чтение символов из последовательного порта и использование
switchдля обработки команд. - Обработка ошибок: Случай
defaultперехватывает недопустимый ввод и предоставляет обратную связь.
Типичные ошибки и советы по отладке
- Монитор последовательного порта не показывает вывод? Убедитесь, что скорость передачи данных совпадает (9600). Также убедитесь, что вы нажали кнопку подключения монитора последовательного порта.
- Светодиод не реагирует? Проверьте правильность подключения светодиода: анод к выводу 13, катод к GND. В Velxio провода имеют цветовую маркировку; проверьте соединения.
- Команды не работают? Код игнорирует непечатные символы (ASCII < 32). Если вы отправляете символы новой строки, они игнорируются. Используйте опцию “Без завершения строки” в мониторе последовательного порта или отправляйте только символ.
- Несколько символов? Код считывает по одному символу за раз. Если вы отправите “10”, он обработает ‘1’, а затем ‘0’ в отдельных итерациях цикла.
Предлагаемые расширения
После того как вы освоите этот проект, попробуйте следующие улучшения:
- Добавьте второй светодиод на вывод 12 и управляйте им с помощью команд ‘2’ и ‘3’.
- Используйте ШИМ для управления яркостью: отправьте число от 0 до 255, чтобы установить яркость светодиода с помощью
analogWrite(). - Добавьте кнопку в качестве ввода: считывайте цифровой вывод и переключайте светодиод при нажатии.
- Реализуйте парсер команд, который принимает строки, такие как “ON” или “OFF”, вместо одиночных символов.
- Записывайте данные в монитор последовательного порта: выводите показания датчиков или временные метки.
Заключение
Вы только что создали простой, но мощный последовательный контроллер светодиода! Этот проект является основой для бесчисленных проектов IoT и автоматизации, где вы управляете оборудованием с помощью текстовых команд. Velxio позволяет легко экспериментировать без физических компонентов.
Готовы попробовать сами? Откройте пример Последовательное управление светодиодом в Velxio, запустите симуляцию и начните отправлять команды. Удачного творчества!