解决了开发环境的问题,下面就从GPIO口入手来掌握它的使用。
BPI-Pico-RP2040的引脚使用情况如图1所示,除了被占用的引脚,均可作为使用的资源。
图1 引脚使用状况
这里先选用引脚2和引脚13来测试,其中引脚2作输入,引脚13作输出,其相应的设置函数为:
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(13, OUTPUT);
}
相应的运行测试函数为:
void loop() {
int sensorVal = digitalRead(2);
if (sensorVal == HIGH) {
digitalWrite(13, LOW);
} else {
digitalWrite(13, HIGH);
}
}
为观察效果,这里为引脚13接上一个外挂的LED模块,并通过导线将引脚2接地来模拟按键按下的效果。
经程序的下载,其运行效果如图2所示,若断开引脚2的连线,则LED灯熄灭,说明程序设计正确。
图2 点亮LED
若将引脚2接上一个按键模块,由于按键是打开的,故输出的是高电平,从而导致LED灯被点亮,见图3所示。挡按键按下时,由于输出的是低电平,故LED灯会熄灭,见图4所示。
图3 释放按键
图4 按下按键
此外,由开发板的原理图可知,在板上是有一个LED来供测试使用的,其连接的引脚为GPIO25,见图5所示。
图5 LED电路
这样只需连接按键模块就可以进行GPIO口的测试了,修改后的程序为:
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(25, OUTPUT);
}
void loop() {
int sensorVal = digitalRead(2);
if (sensorVal == HIGH) {
digitalWrite(25, LOW);
} else {
digitalWrite(25, HIGH);
}
}
其测试的效果如图6和图7所示,效果是相同的。
图6 释放按键
图7 按下按键
当然,若没有按键模块也可用LED灯的闪烁效果来测试,其程序为:
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
此外,利用PWM的调节功能还可产生呼吸灯的效果,其程序如下:
int led = 25;
int brightness = 0;
int fadeAmount = 5;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
analogWrite(led, brightness);
brightness = brightness + fadeAmount;
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
delay(30);
}
视频:
由此可见仅是GPIO口就可完成许多的工作及效果测试。