Raspberry-Pi-Pico-MANUAL
来自Waveshare Wiki
开发环境搭建
安装Arduino IDE
-
首先到Arduino官网下载Arduino IDE的安装包。
-
这里选择仅下载就可以了。
-
下载完成后,点击安装。
注意:安装过程中会提示你安装驱动,我们点击安装即可
Arduino IDE中文界面
在Arduino IDE中安装Arduino-Pico Core
-
打开Arduino IDE,点击左上角的文件,选择首选项
-
在附加开发板管理器网址中添加如下链接,然后点击OK
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
注意:如果您已经有ESP32板URL,您可以使用逗号分隔 URL,如下所示:https://dl.espressif.com/dl/package_esp32_index.json,https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
-
点击工具>开发板>开发板管理器>搜索pico,由于我的电脑已经安装过了,所以显示已安装
国内用户
- 因为网络原因,国内用户连接github并不稳定,我们另外提供了一份安装包,可以跳过在线的过程
- 若已经成功配置了pico环境,可以直接跳过本章
-
下载rp2040压缩包,将解压的rp2040文件夹复制到如下路径下
C:\Users\[username]\AppData\Local\Arduino15\packages
第一次上传程序
- 下载程序,打开arduino\PWM\D1-LED路径下的D1-LED.ino
-
点击工具>端口,记住已有的COM,不需要点击这个COM(不同电脑显示的COM不一样,记住自己电脑上已有的COM)
-
用USB线将驱动板和计算机连接起来,再点击工具>端口,第一次连接选择uf2 Board,上传完成后,再次连接就会多出一个COM口
-
点击工具>开发板>Raspberry Pi Pico/RP2040>Raspberry Pi Pico
- 设置完成后,点击向右箭头上传将程序
- 如果期间遇到了问题,需要重新安装或者更换Arduino IDE版本时,卸载Arduino IDE需要卸载干净,卸载软件后需要手动删除C:\Users\[name]\AppData\Local\Arduino15这个文件夹内的所有内容(需要显示隐藏文件才能看到) 再重新安装
1.GPIO
D0:Key
- 工程文件地址:arduino/GPIO/KEY&LED
函数解析
- setup()
- 当Arduino程序开始运行时会调用setup()函数。通常我们setup()函数其中初始化一些变量、引脚状态及一些调用的库等。
- 当Pico控制器通电或复位后,setup()函数会运行一次。
- loop()
- 在setup()函数对程序完成了初始化后,loop()函数将会运行。loop函数是一个循环体,在Pico启动后,loop()函数中的程序将会不断运行。
- 通过loop()函数你可以利用你的程序来控制Pico,并使Pico根据你的程序进行相应的反应。
- pinMode()
- 通过pinMode()函数可以将Pico的引脚配置为以下三种模式:
OUTPUT模式:当引脚设置为输出(OUTPUT)模式时,引脚为低阻抗状态,可以点亮LED或者驱动电机。
INPUT模式:当引脚设置为输入(INPUT)模式时,引脚为高阻抗状态(100兆欧)。此时该引脚可用于读取传感器信号或开关信号。
INPUT_PULLUP模式:Pico微控制器自带内部上拉电阻。如果你需要使用该内部上拉电阻,可以通过pinMode()将引脚设置为输入上拉(INPUT_PULLUP)模式。
- 通过pinMode()函数可以将Pico的引脚配置为以下三种模式:
例程效果
- 按键按下时,LED同步亮起
- 按键松开时,LED熄灭并且在串口中输出按下时间
2.PWM
D1:LED
- 工程文件地址:arduino/PWM/D1-LED
函数解析
- analogWrite
- 将一个模拟数值写进Pico引脚。这个操作可以用来控制LED的亮度, 或者控制电机的转速。
- analogWrite(pin, value) 其中pin:被读取的模拟引脚号码,value:0到255之间的PWM频率值, 0对应off, 255对应on。
- map() - 等比映射
- map()可以用来将某一数值从一个区间等比映射到一个新的区间。
- map (x, in_min, in_max, out_min, out_max)
- 参数x: 要映射的值
in_min: 映射前区间最小值
in_max: 映射前区间最大值
out_min: 映射后区间最小值
out_max 映射后区间最大值
例程效果
- LED循环以2.5KHz频率闪烁,每10ms为间距,增加或者减少占空比1%,实现呼吸灯的效果
D2:BUZZER
- 工程文件地址:arduino/PWM/D2-BUZZER
函数解析
- tone()
- tone()函数可以产生固定频率的PWM信号来驱动扬声器发声。发声时间长度和声调都可以通过参数控制。
- tone(pin, frequency, duration)
pin: 发声引脚(该引脚需要连接扬声器)
frequency: 发声频率(单位:赫兹) – 无符号整数型
duration: 发声时长(单位:微秒,此参数为可选参数) – 无符号长整型
例程效果
- 无源蜂鸣器以占空比为30%,频率在600Hz-1.4KHz之间鸣叫,实现类似警笛的音效
3.I2C
I2C1:OLED
- 工程文件地址:arduino/I2C/I2C1-OLED
函数解析
- Wire库可以让Pico与IIC设备进行通信。 IIC是主从方式通讯,一个主设备与一个或多个从设备进行通讯
- 使用之前使用以下语句进行Wire库声明#include <Wire.h>
- 本套Pico入门级传感器套件引出两组IIC接口,分别是i2c0和i2c1对应wire()和wire1()函数。
- begin()
- 初始化Wire库,并以主机或从机身份加入I2C总线。
- requestFrom()
- 由主设备用来向从设备请求字节。
- 请求发送之后可以使用available()和read()来接受并读取数据。
- Wire.requestFrom(address, quantity, stop)参数:
address: 设备的7位地址,用于请求字节
quantity: 请求的字节数
stop (bool): 值为true则在请求后发送停止消息,释放总线。值为 false则在请求后发送重启信息,以保持连接处于活动状态。
- beginTransmission()
- 使用指定的地址开始向I2C从设备进行传输。
- endTransmission()
- 停止与从机的数据传输
- read()
- 读取在requestFrom()调用后从从设备响应发送到主设备的字节,或从主设备发送到从设备的字节。
- write()
- 用于响应来自主设备的请求,即从设备写入数据
- Wire.write(value) 其中value: 一个要发送的单字节
- Wire.write(string) 其中string: 一系列要发送的字符串
- Wire.write(data, length)其中data: 要作为字节发送的数组数据,length: 要传输的字节数
例程效果
- 1.5inch OLED显示图形测试界面并保持1S
- 1.5inch OLED显示标题与不同灰度的条纹并一直保持
I2C0:6-DOF
- 工程文件地址:arduino/I2C/I2C0-6-DOF
例程效果
- 串口打印加速度与陀螺仪读数
- 此时移动或者转动板子,可以很清晰看到数值变化
I2C0:VOC
- 工程文件地址:arduino/I2C/I2C0-VOC
例程效果
- 串口打印VOC读数
- 等待约3S,VOC读数会缓慢增加的,最后会稳定在一个稳定值,平均约为100,最大值为500,越大代表空气质量越差。
- 此时向VOC传感器吹一口气,数值会逐渐上升,随后逐渐降低。
I2C0:EEPROM
- 工程文件地址:arduino/I2C/I2C0-EEPROM
例程效果
- 串口打印复位次数
- 复位次数是从EEPROM中读取并通过CRC8进行验证,每次复位或者重启都会使显示数值加一
I2C0:SHTC3
- 工程文件地址:arduino/I2C/I2C0-SHTC3
例程效果
- 串口打印芯片ID与温湿度读数
I2C0:MOTOR DRIVER
- 工程文件地址:arduino/I2C/I2C0-MOTOR-DRIVER
例程效果
- 依次驱动A、B、C、D四个端口上的电机正转一秒钟,占空比分别为25%、50%、75%和100%
4.ADC
ADC0:LDR
- 工程文件地址:arduino/ADC/ADC0-ADC0-LDR
例程效果
- 每秒通过串口输出当前光敏电阻上的电压
ADC1:VOL
- 工程文件地址:arduino/ADC/ADC1-VOL
例程效果
- 每秒通过串口输出当前电位器上的电压
ADC2:SOUND
- 工程文件地址:arduino/ADC/ADC2-SOUND
例程效果
- 每0.1秒通过串口输出当前声音传感器输出电压与直流输出值
- PS:因为声音是振动产生的声波,所以声音传感器获得到的电压值不是一个稳定值,所以输出电压无法直接与音量挂钩。
5.PIO
D3:IR RX
- 工程文件地址:arduino/PIO/D3-IR-RX
例程效果
- 等待红外遥控器信号
- 接收到红外遥控器信号后,解码并将数据通过串口输出
D4:IR TX
- 工程文件地址:arduino/PIO/D4-IR-TX
例程效果
- 每1秒通过红外发射模块发射符合NEC协议的地址为0x00、命令为0x00的信号
D7:RGB LED
- 工程文件地址:arduino/PIO/D7-RGB
例程效果
- RGB循环渐变颜色