前言
准备一些硬件设备
- Seeed Studio XIAO RP2040 一块
- 电脑——window 或 Mac 一台
- Type-C数据线
某些USB线只支持充电,无传输数据功能。
连接电脑
- 按住boot按钮,然后将 Seeed Studio XIAO RP2040 连接到 PC。
2. 如果电脑文件管理器上显示了“RPI-RP2”磁盘,并且Seeed Studio XIAO RP2040上的电源指示灯亮起,则连接完成。
Arduino开发
下载Arduino
根据电脑的操作系统下载并安装最新版本的Arduino IDE。
下载地址:https://www.arduino.cc/en/software
添加开发板包
将 Seeed Studio Xiao RP2040 板卡包添加到Arduino IDE中,步骤如下:
导航到“文件>首选项”,然后使用以下 URL 填充“其他开发板管理器地址”:
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
导航到“工具->开发板->开发板管理器…”,在搜索框中输入“RP2040”。选择最新版本的“Raspberry Pi Pico/RP2040”并安装它。
注意:Seeed Xiao RP2040的开发板软件包已经停止运维,请不要下载使用!
选择开发板和端口
开发板选择:导航到“工具->开发板->Raspberry Pi Pico/RP2040->Seeed XIAO RP2040”,选择Seeed XIAO RP2040开发板。
端口选择:导航到“工具->端口”,选择你对应开发板的连接串口。
运行示例代码
通过导航“文件 --> 示例—>01.基础知识 --> 闪烁”打开闪烁示例的源代码。
这里需要确认下选择开发板和端口是否正确,回顾开发板和端口选择配置
上传到开发板
单击上传按钮将闪烁示例代码上传到开发板。
上传后,你应该能够看到板上的引脚 25 绿色 (USER) LED 每秒闪烁一次。
如果上传Arduino程序失败,请尝试按住“BOOT”按钮,然后单击“RUN”按钮。
此时,Seeed Studio XIAO RP2040将进入启动模式,这个时候可以再次烧录Arduino程序。
其他示例
输出Hello World
使用引脚 D6 作为 UART 的 TX 引脚,引脚 D7 作为 UART 的 RX 引脚发送“Hello World!
void setup() {
Serial.begin(115200);
while (!Serial);
}
void loop() {
Serial.println("Hello,World");
delay(1000);
}
代码解析
void setup()
: 这是一个特殊的函数,它在程序开始执行时运行一次,用于初始化设置。Serial.begin(115200)
: 初始化串口通信,将串口的波特率设置为 115200 比特每秒。这意味着在串口上的数据传输速率为 115200 bps。while (!Serial);
: 这一行会等待串口准备就绪。在某些情况下,当程序开始时,串口可能需要一些时间来初始化,所以这一行确保在串口完全准备好之前不会继续执行后续的代码。
void loop()
: 这是另一个特殊的函数,它会不断循环执行,用于执行主要的操作。Serial.println("Hello,World");
: 在每次循环中,向串口发送一条包含 “Hello, World” 字符串的信息,然后换行。这会导致该信息被发送到连接到 Arduino 板上的串口(如 USB 串口),从而可以通过串口监视器查看。delay(1000);
: 在发送完信息后,程序会暂停执行 1000 毫秒(也就是 1 秒),然后再继续下一次循环。这样做是为了在每次发送信息后等待一段时间。
按键控制开关LED灯
将按钮连接到引脚 D0,将 LED 连接到引脚 25。然后上传以下代码以使用按钮控制 LED 的开/关。
请注意,Seeed Studio XIAO RP2040的工作电压为3.3V,如果将传感器错误地连接到5V,主板可能无法正常工作。
const int buttonPin = D0; // 按钮引脚号
const int ledPin = 25; // LED引脚号
int buttonState = 0; // 变量,用于读取按钮状态
void setup() {
// 初始化LED引脚为输出模式:
pinMode(ledPin, OUTPUT);
// 初始化按钮引脚为输入模式:
pinMode(buttonPin, INPUT);
}
void loop() {
// 读取按钮状态的值:
buttonState = digitalRead(buttonPin);
// 检查按钮是否被按下。如果按下,buttonState 为高电平(HIGH):
if (buttonState == HIGH) {
// 关闭LED灯:
digitalWrite(ledPin, HIGH);
} else {
// 打开LED灯:
digitalWrite(ledPin, LOW);
}
}
指令控制开关LED灯
通过串口向单片机发送特定指令,如“o”指令,开发板的LED灯亮,输入特定指令,如“c”指令,开发板的LED灯灭
int LED_PIN = LED_BUILTIN; // 将LED的引脚定义为LED_BUILTIN
bool ledState = LOW; // 初始LED状态为关闭
void setup() {
pinMode(LED_PIN, OUTPUT); // 初始化LED引脚为输出模式
Serial.begin(9600); // 初始化串口通信,波特率设置为9600
}
void loop() {
if (Serial.available() > 0) {
String command = Serial.readStringUntil('\n'); // 读取串口输入直到换行符
if (command == "o") {
digitalWrite(LED_PIN, HIGH); // 打开LED灯
ledState = HIGH;
} else if (command == "c") {
digitalWrite(LED_PIN, LOW); // 关闭LED灯
ledState = LOW;
}
}
}
指令控制开关RGB LED灯
通过串口向单片机发送特定指令,如“o”指令,开发板的RGB LED灯亮,输入特定指令,如“c”指令,开发板的RGB LED灯灭。
引脚 11 是 RGB LED 的使能引脚。我没可以通过将引脚 11 设置为高点亮 RGB LED,并可以改变RGB LED颜色实现闪烁。
首先,我们需要添加一个第三方库。
打开Arduino IDE,导航到以 Sketch > Include Library > Manage Libraries...
搜索库。在 Ardunio 库管理器中键入关键字“Adafruit_NeoPixel”库并安装最新版本。
#include <Adafruit_NeoPixel.h>
int Power = 11;
int PIN = 12;
#define NUMPIXELS 1
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
pixels.begin();
pinMode(Power, OUTPUT);
digitalWrite(Power, HIGH);
Serial.begin(9600); // 初始化串口通信,波特率设置为 9600
}
void loop() {
if (Serial.available() > 0) {
String command = Serial.readStringUntil('\n'); // 读取串口输入直到换行符
if (command == "o") {
pixels.clear();
pixels.setPixelColor(0, pixels.Color(0, 255, 0)); // 绿色
pixels.show();
} else if(command == "oc"){
pixels.clear();
pixels.setPixelColor(0, pixels.Color(15, 25, 205));
delay(400);
pixels.show();
pixels.clear();
pixels.setPixelColor(0, pixels.Color(103, 25, 205));
delay(400);
pixels.show();
pixels.clear();
pixels.setPixelColor(0, pixels.Color(233, 242, 205));
delay(400);
pixels.show();
pixels.clear();
pixels.setPixelColor(0, pixels.Color(233, 23, 23));
delay(400);
pixels.show();
pixels.clear();
pixels.setPixelColor(0, pixels.Color(12, 66, 101));
delay(400);
pixels.show();
delay(500);
} else if (command == "c") {
pixels.clear();
pixels.setPixelColor(0, pixels.Color(0, 0, 0)); // 关闭 LED 灯颜色为黑色
pixels.show();
}
}
}
参考
- https://wiki.seeedstudio.com/XIAO-RP2040/
- https://wiki.seeedstudio.com/XIAO-RP2040-with-Arduino/