返回

Arduino 串口控制 LED:发送指令实现闪烁

简介

欢迎来到 串口控制 LED 项目!在本教程中,你将学习如何通过串口监视器发送简单指令,来控制连接到 Arduino Uno 的 LED。这是一个经典的入门项目,融合了两个基本概念:USART(通用同步/异步收发器) 通信和 GPIO(通用输入/输出) 输出。最终,你将能够通过在串口监视器中输入 “1” 或 “0” 来打开或关闭 LED,甚至可以通过输入 ”?” 查询 LED 的状态。

我们将使用 Velxio——一个基于浏览器的电路和微控制器模拟器,支持 SPICE 精度的模拟仿真。无需硬件,只需你的浏览器!让我们开始吧。

电路讲解

Velxio 模拟器画布上的串口控制 LED 电路图

这个电路非常简单。你只需要两个元件:

接线详情

  1. LED 阳极(长引脚,A 引脚) 通过绿色导线(#00cc00)连接到 Arduino 的 13 号引脚
  2. LED 阴极(短引脚,C 引脚) 通过黑色导线(#000000)连接到 Arduino 的 GND

就是这样!不需要电阻,因为 Arduino Uno 的 13 号引脚板上已经内置了限流电阻。在实际电路中,你需要串联一个 220Ω 的电阻,但在模拟中,这样已经完美运行。

如何在 Velxio 中搭建

  1. 在 Velxio 中打开 串口控制 LED 示例
  2. 你会看到 Arduino Uno 和 LED 已经放置在画布上。如果你想从头搭建,可以使用 元件选择器(如下所示)来添加 Arduino Uno 和 LED。

Velxio 元件选择器弹窗,按类别浏览零件

  1. 点击 Arduino Uno 选中它,然后点击 13 号引脚。拖拽一根导线到 LED 的阳极(A 引脚)。
  2. 同样,将 LED 的阴极(C 引脚)连接到 Arduino 的任意 GND 引脚。
  3. 使用 画布工具栏 进行缩放和平移,以获得更好的视角。

Velxio 画布工具栏,位于模拟视口上方

代码讲解

Velxio Monaco 编辑器中串口控制 LED 的源代码

现在让我们来看看实现这一切的代码。在 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 并按回车——绿色 LED 应该会亮起。
  3. 输入 0——LED 熄灭。
  4. 输入 ?——你会看到状态和运行时间。

学生需掌握的关键概念

本项目教授了几个重要概念:

常见问题与调试技巧

建议的扩展练习

掌握本项目后,可以尝试以下改进:

  1. 添加第二个 LED 到 12 号引脚,并用 ‘2’ 和 ‘3’ 这样的指令控制它。
  2. 使用 PWM 控制亮度:发送 0 到 255 之间的数字,通过 analogWrite() 设置 LED 亮度。
  3. 添加一个按钮 作为输入:读取数字引脚,按下时切换 LED 状态。
  4. 实现一个指令解析器,使其能够接受像 “ON” 或 “OFF” 这样的字符串,而不是单个字符。
  5. 记录数据 到串口监视器:打印传感器读数或时间戳。

结论

你已经成功构建了一个简单但功能强大的串口 LED 控制器!这个项目是无数物联网和自动化项目的基础,在这些项目中,你可以通过文本指令控制硬件。Velxio 让你无需任何物理元件就能轻松进行实验。

准备好亲自尝试了吗?在 Velxio 中打开 串口控制 LED 示例,运行模拟,开始发送指令吧。祝你玩得开心!


分享到:
David Montero

作者

David Montero

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

GitHub velxio.dev

相关文章


上一篇
使用Arduino的I2C扫描仪:发现总线上的每个设备
下一篇
Arduino串口回显:学习USART通信