引言
欢迎来到你的第一个 Raspberry Pi Pico 串口控制项目!在本教程中,我们将构建一个简单的电路,让你通过在串口监视器中输入命令来打开和关闭 LED。你将学习串口通信、数字输出以及如何使用 Velxio 模拟器在无需硬件的情况下测试代码的基础知识。
这个项目非常适合想要了解微控制器如何与计算机通信的初学者。完成后,你将能够扩展这个概念来控制多个 LED、读取传感器,甚至构建一个简单的菜单系统。
电路讲解
让我们看看我们将要构建的电路。在 Velxio 中打开示例,你会看到以下组件:

- Raspberry Pi Pico (nano-rp2040):操作的大脑。我们将使用 D2 引脚作为控制引脚。
- LED (led-status):一个我们将要打开和关闭的绿色 LED。阳极 (A) 连接到 Pico,阴极 (C) 连接到一个限流电阻。
- 电阻 (r1):一个 220Ω 的电阻,用于限制通过 LED 的电流以防止损坏。
接线细节
- 从 Pico D2 到 LED 阳极:一根绿色电线将 Pico 的 D2 引脚连接到 LED 的阳极 (A)。这是控制信号。
- 从 LED 阴极到电阻:一根灰色电线将 LED 的阴极 (C) 连接到电阻的一端(引脚 1)。
- 从电阻到 Pico GND:一根黑色电线将电阻的另一端(引脚 2)连接到 Pico 的地 (GND.1)。
就是这样!电路简单但有效。电阻对于避免烧坏 LED 至关重要。使用 220Ω 电阻和典型的 LED 正向电压(约 2V),电流大约为 (3.3V - 2V) / 220Ω ≈ 6mA,这是安全的。
代码讲解
现在让我们深入代码。在 Velxio 中打开编辑器,你会看到以下 Arduino 代码:
// Raspberry Pi Pico — Serial LED Control
// Send '1' to turn LED ON, '0' to turn OFF, '?' for status
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(115200);
delay(500);
Serial.println("=== Pico LED Control ===");
Serial.println("Commands: 1=ON 0=OFF ?=status");
}
void loop() {
if (Serial.available()) {
char cmd = Serial.read();
switch (cmd) {
case '1':
digitalWrite(LED_BUILTIN, HIGH);
Serial.println("LED: ON");
break;
case '0':
digitalWrite(LED_BUILTIN, LOW);
Serial.println("LED: OFF");
break;
case '?':
Serial.print("LED: ");
Serial.println(digitalRead(LED_BUILTIN) ? "ON" : "OFF");
break;
default:
if (cmd >= ' ') {
Serial.print("Unknown command: ");
Serial.println(cmd);
}
break;
}
}
}
工作原理
setup():我们将内置 LED 引脚设置为输出,以 115200 波特率 启动串口通信,等待 500ms 让串口连接稳定,然后打印欢迎信息和操作说明。loop():我们检查串口缓冲区中是否有字符可用。如果有,我们读取它并使用switch语句处理三个命令:'1':打开 LED (HIGH) 并打印确认信息。'0':关闭 LED (LOW) 并打印确认信息。'?':读取 LED 引脚的当前状态并打印 “ON” 或 “OFF”。- 任何其他可打印字符(ASCII >= 32)会打印 “Unknown command” 消息。不可打印字符将被忽略。
注意我们使用了 LED_BUILTIN,这是 Pico 板载 LED 的预定义常量(通常在引脚 25 上)。在我们的电路中,我们将一个外部 LED 连接到了 D2 引脚,但代码仍然使用内置 LED。如果你想控制外部 LED,将 LED_BUILTIN 改为 2(或定义一个常量)。对于这个示例,内置 LED 工作得很好。
关键概念
- 串口通信:Pico 通过 USB 串口与你的计算机通信。
Serial.begin(115200)设置波特率——确保你的串口监视器匹配这个速度。 - 数字输出:
pinMode(pin, OUTPUT)和digitalWrite(pin, HIGH/LOW)是控制引脚的基础。 - Switch 语句:一种处理多个命令的简洁方式。它比一连串的
if-else语句更高效。 - 输入验证:代码忽略不可打印字符并警告未知命令。这是编写健壮程序的好习惯。
常见陷阱与调试技巧
- 串口监视器波特率:如果你看到乱码字符,说明你的串口监视器波特率与 115200 不匹配。在 Velxio 中,串口监视器是内置的,会自动使用正确的速率。
- LED 不亮:检查 LED 方向是否正确(阳极接 D2,阴极接电阻)。同时验证电阻值——太高 LED 会变暗;太低可能会烧坏。
- 命令无效:确保你发送的是精确的 ‘1’、‘0’ 或 ’?’(不带引号)。代码读取单个字符,所以发送 “1\n” 也能工作,因为 ‘1’ 先被读取,换行符被忽略(因为它不可打印)。
- 使用模拟器:Velxio 的工具栏让你可以编译和运行代码。
点击 “Run” 按钮启动模拟。画布工具栏
提供暂停和重置等控件。如果需要添加组件,使用组件选择器
。
建议的扩展
一旦你完成了基本项目,尝试以下增强功能:
- 控制外部 LED:将
LED_BUILTIN改为2,并按照电路图将外部 LED 连接到 D2 引脚。 - 添加更多 LED:使用多个引脚和命令,例如 ‘r’ 表示红色,‘g’ 表示绿色,‘b’ 表示蓝色。
- PWM 调光:使用
analogWrite()设置亮度级别。发送像 ‘0’ 到 ‘9’ 这样的值,对应 0% 到 100% 的亮度。 - 双向通信:当你发送像 ‘t’ 这样的命令时,让 Pico 发送传感器数据(例如温度)。
- 菜单系统:打印一个选项菜单,并使用循环等待有效输入。
行动号召
准备好自己尝试了吗?在 Velxio 中打开实时示例并开始实验:Pico Serial LED Control on Velxio。无需下载,无需设置——只需你的浏览器和好奇心。祝你编程愉快!