备注:这个入门指南最初是由Suthinee Kerdkaew以泰语发布的,之后我又将其翻译成了英文并稍作修改。本文发布的是修改过后的中文版本。
正如之前我所写的一样,Maker Nano RP2040是一款遵循Arduino Nano外形尺寸的开发板,但搭载的是更强大的树莓派RP2040微控制器。该板还配有大量LED、两个RGB LED和一个用于音频输出的压电蜂鸣器。
Jean-Luc Aufranc先生不久前送给了我一个Cytron的Maker Nano RP2040板,用于评测。我以前从来没使用过开发板,所以这是我的第一次体验。在本文中,我会尝试在Maker Nano RP2040上使用CircuitPython进行三个演示:闪烁示例、更改RGB LED的颜色,以及通过压电蜂鸣器播放一段旋律。我们一起来看看能不能做到吧!
我们开始吧,我首先从官网下载了CircuitPython固件。选择语言,就可以单击“DOWNLOAD.UF2 NOW”。
下载完文件后,我使用Micro USB转USB电缆将开发板连接到了我的Ubuntu笔记本电脑。这时它会自动挂载一个名为“CIRCUITPY”的驱动器。哦!这意味着Maker Nano RP2040板预装了CircuitPython,也就是说我们开箱就能使用这一开发板了!不过,如果想要安装最新版本的固件,还是可以使用与树莓派 Pico 相同的固件更新方法来安装。
我们可以双击code.py来查看开发板上预装的示例程序。代码很多,像我这样的初学者其实还是很难理解的。
CircuitPython“闪烁”示例
所以我想编写一个简单点的程序,即典型“闪烁”程序,使用CircuitPython定期闪烁LED。代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import board import digitalio import time # Set pin 0 as digital output led = digitalio.DigitalInOut(board.GP0) led.direction = digitalio.Direction.OUTPUT # ------------------------------------------------- # FOREVER LOOP - Blink the LED every second (0.5s on, 0.5s off) # ------------------------------------------------- while True: led.value = True time.sleep(0.5) led.value = False time.sleep(0.5) |
我们可以看到连接GPIO 0的蓝色LED每500毫秒(1 秒周期)内就会打开和关闭一次,你们可以通过观看视频来了解具体的情况。相关视频链接,点击此处可查看。
使用Maker Nano RP2040上的RGB LED
下一步,我将会展示在CircuitPython中编写一个程序,按下连接到GPIO 20的按钮时改变两个RGB LED的颜色。第一次按下时颜色会切换为红色、第二次切换为了绿色、第三次蓝色。我们首先双击code.py将代码更改为如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import board import digitalio import neopixel import simpleio import time import pwmio # Initialize Neopixel RGB LEDs pixels = neopixel.NeoPixel(board.GP11, 2) pixels.fill(0) pixels.brightness = 0.1 # Initialize the button btn1 = digitalio.DigitalInOut(board.GP20) btn1.direction = digitalio.Direction.INPUT btn1.pull = digitalio.Pull.UP color = 0 state = 0 # ------------------------------------------------- # FOREVER LOOP: Check buttons & animate RGB LEDs # ------------------------------------------------- while True: # Check button 1 (GP20) if not btn1.value: # button 1 pressed # Change RGB LED color if state == 0: color = 0xFF0000 # RED state += 1 elif state == 1: color = 0x00FF00 # GREEN state += 1 else: color = 0x0000FF # BLUE state = 0 pixels.fill(color) # fill the color on both RGB LEDs # Sleep to debounce button (200ms delay to make sure multiple presses are not wrongly detected by the loop) time.sleep(0.2) |
现在就可以按照下面视频中的步骤将颜色更改为红色、绿色和蓝色了。
相关视频链接,点击此处可查看。
通过压电蜂鸣器播放旋律
我们现在使用压电蜂鸣器播放旋律“do re mi fa sol la si/ti”并反向播放此旋律。因此,我们需要填充一个数组,下面这是我们的小程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import board import digitalio import neopixel import simpleio import time import pwmio # Initialize Neopixel RGB LEDs pixels = neopixel.NeoPixel(board.GP11, 2) pixels.fill(0) pixels.brightness = 0.2 # Melody arrays: NOTE with the frequencies in HZ, and DURATION in seconds MELODY_NOTE = [262, 294, 330, 349, 392, 440, 494] MELODY_DURATION = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] # Define pin connected to piezo PIEZO_PIN = board.GP22 for i in range(len(MELODY_NOTE)): # Play melody tones simpleio.tone(PIEZO_PIN, MELODY_NOTE[i], duration=MELODY_DURATION[i]) color = 0x7FFF * MELODY_NOTE[i] # Frequency based color pixels.fill(color) # fill the color on both RGB LEDs for x in range(len(MELODY_NOTE)-1, -1, -1): # Play melody tones in reverse order simpleio.tone(PIEZO_PIN, MELODY_NOTE[x], duration=MELODY_DURATION[x]) color = 0x1FFF * MELODY_NOTE[x] # Frequency based color pixels.fill(color) # fill the color on both RGB LEDs # ------------------------------------------------- # FOREVER LOOP # ------------------------------------------------- while True: time.sleep(1) |
操作完成之后,其旋律跟一下视频中的一样,你们可以查看视频:
相关视频链接,点击此处可查看。
操作到这里,我终于可以成功地对开发板进行编程了。
最后,十分感谢Jean-Luc Aufranc在本次评测期间对我的指导。
文章翻译者:Jacob,嵌入式系统测试工程师、RAK高级工程师,物联网行业多年工作经验,熟悉嵌入式开发、测试各个环节,对不同产品有自己专业的分析与评估。