首先,在拿到pico和拓展板后,第一件事一定是准备好设备的资料。在这里我就截几张图放在下面,原文链接:https://www.eetree.cn/project/detail/103
接着需要配置一下micrpython的环境。下载Thonny的IDE,官网下载一个uf2文件。按住pico上的boostel键接入电脑,把文件拖入出现的磁盘中,这样就配置完成了。
开始玩拓展板咯!
首先吸引到我的就是这个LCD屏幕-st7789。然而,当我想要去简单地下载库开始设计时,悲剧发生了,库不能直接使用。在此之后,我又陆续发现,所有的器件库都无法直接使用。在不断测试下,发现pico与之前的支持mycropython的pyb board 函数库相差较大,又因为pico刚刚出世,网上查找到的库都无法直接使用。这时候,一位大佬改写了库文件,才让我有了使用这块屏幕的权力。大佬改写的库文件会放在附件里面,大家可以进行参考(三个文件都要放到pico里面,两个字体文件要放在名为fonts的文件夹里)。在此我就放上封面上显示一行字的代码:
import uos
import machine
import st7789 as st7789
from fonts import vga2_8x8 as font1
from fonts import vga1_16x32 as font2
import random
from MMA7660 import Accelerometer,MMA7660_DATA
st7789_res = 0
st7789_dc = 1
spi_sck=machine.Pin(2)
spi_tx=machine.Pin(3)
spi0=machine.SPI(0,baudrate=4000000, phase=0, polarity=1, sck=spi_sck, mosi=spi_tx)
disp_width = 240
disp_height = 240
print(spi0)
display = st7789.ST7789(spi0, disp_width, disp_width,
reset=machine.Pin(st7789_res, machine.Pin.OUT),
dc=machine.Pin(st7789_dc, machine.Pin.OUT),
xstart=0, ystart=0, rotation=0)
while True:
display.text(font2,"HELLO,PICO!",40,100,st7789.WHITE)
相较于C语言的编写,micropython确实简单了很多。
接着到了麦克风,由于麦克风和电位计是通过跳帽二选一的,两者的程序编写是一模一样,就放在一起了。在这里,两者都是放在了26号GPIO上,因为26号GPIO是支持ADC输入的。两者都会改变输入电压,只有在ADC管脚上才能够读取具体数据。下面是一个简单的例子,读取ADC数据并以波形显示在屏幕上(前面部分和上面一样就不放了):
potentiometer = machine.ADC(26)
while True:
for x in range (0,240):
y=potentiometer.read_u16()
display.pixel(x,y//200,st7789.color565(255,255,255))
display.fill(st7789.color565(0,0,0))
由于ADC输入最大数据
是4095,当整除200后,屏幕上240的像素点大致够用。
这张图是用的麦克风,可见变化较大。
这张图用的是电位计,波形就很稳定。
接下来就是蜂鸣器。蜂鸣器的使用就是相当于输出一个PWM信号,在micropython中只需要设定好频率和占空比就可以输出了。
buzzle=machine.PWM(machine.Pin(28))
buzzle.freq(200)
while True:
buzzle.duty_u16(2047)
这里的频率为200是因为用频率高的声音会让耳朵不舒服,干脆用很低的声音做实验,而占空比就取到4095的一半。
然后是编码器,编码器接上了三个管脚,两个管脚可以检测旋转方向,另一个是按钮。旋转编码器通常是用两个相位相差90°的波的先后来判断顺时针还是逆时针转动。在代码里就是判断两个管脚的值的情况。类似的还有led灯,有着三个管脚分别控制着RGB(led是0有效)。因为仅需控制输出输入的值,比较简单,代码就不放了。
最后是还没有解决的部分:SD卡读写和两个I2C通信的传感器。两个传感器的库需要修改,但是本人水平较差,暂时还没能够调通,等到能够正常使用了再来更新。SD卡的读写还没有涉及,之后也会继续研究。
另外,PICO自带的温度传感器就隐藏在ADC(4)里面,有了温度传感器也可以多一些乐趣。
可以参考的一些资料:1.https://mp.weixin.qq.com/s/YgWKk_RhAIODREgLT3T5yg
2.github上的一些代码参考
3.向大佬请教!
附件:st7789库文件(前面出现的代码都只有几句就不放了)