单片机/MCU论坛
直播中

jinglixixi

8年用户 1552经验值
擅长:嵌入式技术 光电显示 接口/总线/驱动 控制/MCU
私信 关注

【BPI-Pico-RP2040 开发板】+GPIO口的使用

解决了开发环境的问题,下面就从GPIO口入手来掌握它的使用。

BPI-Pico-RP2040的引脚使用情况如图1所示,除了被占用的引脚,均可作为使用的资源。
image.png

图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灯熄灭,说明程序设计正确。
image.png
图2 点亮LED

若将引脚2接上一个按键模块,由于按键是打开的,故输出的是高电平,从而导致LED灯被点亮,见图3所示。挡按键按下时,由于输出的是低电平,故LED灯会熄灭,见图4所示。
image.png
图3 释放按键

image.png
图4 按下按键

此外,由开发板的原理图可知,在板上是有一个LED来供测试使用的,其连接的引脚为GPIO25,见图5所示。
image.png
图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所示,效果是相同的。
image.png
图6 释放按键

image.png
图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口就可完成许多的工作及效果测试。

呼吸灯

更多回帖

发帖
×
20
完善资料,
赚取积分