树莓派 Pico (一)点亮板载 LED & WS2812

官网介绍: 树莓派 Raspberry Pi Pico

先来捋清楚 Raspberry Pi Pico 这几个字的含义:

        Raspberry Pi 是品牌 

        Pico 是子品牌,包含 Pico 和 Pico W (带无线功能)两种开发板

        RP2040 是 Pico 开发板用到的 MCU

        一下统一以 Pico 来称呼。

看到有些搭建需要用到 Pico ,当然程序移植到其他 MCU 也是可以的,不过略显麻烦。

由于是 Pico 开源的,有很多兼容的开发板,引脚一致的,但是有的板上集成了WS2812,比原板还好用,价格还更好。

Pico 支持很多编程方式,先使用熟悉的 arduino1.8.19 试试看。

1.插上USB线,Windows里应该看到如下设备,如果已经运行其他使用串口的程序则可能不是,那么按住boot键不放再插即可。

树莓派 Pico (一)点亮板载 LED & WS2812_第1张图片

2. Arduino 里安装该板的环境,如下搜索后安装即可,速度不错,比ESP32舒适。

树莓派 Pico (一)点亮板载 LED & WS2812_第2张图片

3. 例程里面找到下面这个上传即可,然后可以看到这个模拟键盘就开始干活了:HelloworldHelloworldHelloworldHelloworld。。。往任何能键盘输入的地方发送文字了 

树莓派 Pico (一)点亮板载 LED & WS2812_第3张图片

4. 老规矩,闪个灯先, 板载 LED对应的是 GPIO25

#define LED 25

void setup() {
  pinMode(LED, OUTPUT);  
}

void loop() {
  digitalWrite(LED, HIGH);
  delay(200);
  digitalWrite(LED, LOW);
  delay(500);
}

5. 板上有一颗WS2812,对应的是 GPIO23,这是兼容比原板还好的地方,嗯之一,还有之二就是改了TypeC口。

不过这里有个坑:

实测这颗 WS2812 默认没有连接到任何引脚,但是在附近有一个焊盘,写着RGB,实际测量一下,只要用焊锡短路这个焊盘就可以用了。这也是山寨工业的强项:没有说明,一切靠猜!

#include 
Adafruit_NeoPixel pixels(/*NUMPIXELS*/1, /*PIN*/23, NEO_GRB + NEO_KHZ800);

void setup() {
  pixels.begin(); 
}

void loop() {
  pixels.setPixelColor(0, pixels.Color(20, 0, 0));
  pixels.show();   
  delay(1000);
  pixels.setPixelColor(0, pixels.Color(0, 20, 0));
  pixels.show();   
  delay(1000);
  pixels.setPixelColor(0, pixels.Color(0, 0, 20));
  pixels.show();   
  delay(1000);
}

6. 抓到 Bug 一只(或许是特性):Pico默认的USB上传方式并不是串口,一旦程序里启用串口即 Serial.begin() 上传一次后 , “RP2 boot ”会消失,设备列表里面会多出一个串口。那么后面再次上传时 IDE的下载方式自动变更到这个新出现的串口,上传程序失败,还没法改。那就需要回到1 里面提到的,按住boot键不放再上电即可。不用串口则没有这个问题,可以像使用UNO一样重复点上传都是可以的。

接下来,跑跑流行的 MicroPython:

1. 电脑端软件使用 uPyCraft (其他软件也行,哪个顺手用哪个)

2. 按住boot键不放再上电,看到盘符 RPI-RP2

3. 官网下载固件 rp2-pico-20230203-unstable-v1.19.1-852-g9ea64a36a.uf2 

4. 把这个文件拖进 RPI-RP2 盘里面。

5. 按板上的 reset 按键,这时 MicoPython 准备好了。

可以看出 Pico 刷固件真是很方便,比其他的 MCU 比如 ESP32 方便很多. 

Pico出厂默认预装MicroPython固件,上面这些操作其实可以不做的,我是先用了arduino才需要刷一次。

惯例闪个灯:(关于 uPyCraft 的使用百度很多)

树莓派 Pico (一)点亮板载 LED & WS2812_第4张图片

import machine
import utime

led_onboard = machine.Pin(25, machine.Pin.OUT) # GP25

while True:
    led_onboard.value(1)  # 点亮
    utime.sleep(0.1) # 等待1秒
    led_onboard.value(0) # 熄灭
    utime.sleep(0.9) # 等待1秒

你可能感兴趣的:(笔记,PICO)