【Follow me第二季第4期】任务一:极简环境+快速烧录+花样点灯+结果输出+小知识
[复制链接]
本帖最后由 HonestQiao 于 2024-11-22 01:49 编辑
Arduino® Nano RP2040 Connect可以使用的开发环境非常多,常见的C/C++ Pico SDK、Arduino、PlatformIO、micropython、circuitpython等等,都能支持。
这里简单起见,使用了micropython环境,能够以最快的速度,第一时间跑起来。
一、安装IDE
前往OpenMV官方,下载OpenMV IDE: Download – OpenMV
按照自己的需要,下载对应操作系统的版本:
我用的是macOS系统,下载了这个:
不同系统下面,用法基本都差不多。
安装完,打开运行:
二、烧录固件
在OpenMV IDE中使用Arduino® Nano RP2040 Connect,可以非常简单的让你用上最新的micropython 适配OpenMV固件。
首次使用时,可以把Arduino® Nano RP2040 Connect连到电脑,然后再连按两下按键:
正确连按的情况下,电脑会出现一个U盘设备:
没出来的话,尝试间隔时间少一点或者多一点。
然后点击如图所示的连接图标:
会提示找到DFU模式设备,并提示安装最新固件:
点击确定,等待自动下载安装完成即可:
安装完成提示如下:
最终结果如下:
三、点灯
Arduino® Nano RP2040 Connect,有一个普通LED,和一个RGB LED。
普通LED,从Pinout可以看到:
现在点亮这个普通LED,代码如下:
from machine import Pin
import time
led = Pin("LED", Pin.OUT)
status = False
while True:
led.value(status)
status = not status
time.sleep(0.3)
然后点击左下角的运行即可执行代码:
运行结果如下:
5031_1732209266
四、点亮RGB LED
点亮RGB LED和点亮普通LED的方法,完全一样,就是RGB是三个LED,分别控制。
从Pinout可以了解RGB LED:
具体代码如下:
from machine import Pin
import time
# 设定GPIO引脚
leds_name = (
"LEDR",
"LEDG",
"LEDB",
)
leds = [Pin(name, Pin.OUT) for name in leds_name]
index = 0
while True:
i = index % len(leds)
print(leds_name[i], leds[i])
for n in range(len(leds)):
if n != i:
leds[n].value(True)
pass
leds[i].value(False)
index += 1
time.sleep(0.3)
需要注意的一点就是,RGB LED,和普通LED,高低电平控制正好相反。
给RGB LED对应颜色的LED值True,实际上是熄灭,而值False,则是点亮。
运行结果如下:
5032_1732209837
五、任务一
任务一具体为:必做任务一:搭建环境并开启第一步Blink三色LED / 串口打印Hello DigiKey & EEWorld!;
根据任务需要,具体的代码如下:
from machine import Pin
import time
# 设定GPIO引脚
leds_name = (
"LED",
"LEDR",
"LEDG",
"LEDB",
)
leds = [Pin(name, Pin.OUT) for name in leds_name]
HS = (
True,
False,
False,
False
)
print("Hello DigiKey & EEWorld!")
index = 0
while True:
i = index % len(leds)
print(leds_name[i], leds[i], HS[i])
for n in range(len(leds)):
if n != i:
leds[n].value(not HS[n])
pass
leds[i].value(HS[i])
index += 1
time.sleep(0.3)
在上面的代码中,把普通LED和RGB LED一起做为一组进行循环点亮,并在最开始输出需要的文字信息。
运行后,串口输出如下:
实际运行结果如下:
5033_1732210203
六、小知识
在micropython 1.20及以后版本中,可以查看为特定开发板定制的micrpython的引脚命名信息,方便在代码中调用。
例如前面的代码中,使用了LED、LEDR、LEDG、LEDB的命名形式,来对应具体的LED:
如果使用下面的形式:
实际运行的时候,就普通LED被点亮了,而RGB LED没有动静。
这是因为普通LED,是连接到RP2040的,而RGB LED,则不是的。
如果研究一下原理图,会发现RGB LED的连接:
它们居然是通过WiFi模块来间接控制的。
而RGB LED的控制,通过命名来调用的话,系统就会自动处理了。
要查看Arduino® Nano RP2040 Connect定制的micropython环境有那些命名,可以通过下面的代码查看:
from machine import Pin
print(dir(Pin.board))
这将会输出下面的数据:
['__class__', '__name__', 'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'D10', 'D11', 'D12', 'D13', 'D14', 'D15', 'D16', 'D17', 'D18', 'D19', 'D2', 'D20', 'D21', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'LED', 'LEDB', 'LEDG', 'LEDR', 'LED_BLUE', 'LED_BUILTIN', 'LED_GREEN', 'LED_RED', 'RX', 'SCL', 'SDA', 'TX', '__bases__', '__dict__']
从上面的输出可以看到,可用的LED命名:
- 板载LED:LED、LED_BUILTIN
- RGB LED的红色:LEDR、LED_RED
- RGB LED的绿色:LEDG、LED_GREEN
- RGB LED的蓝色:LEDB、LED_BLUE
上面专门为Arduino® Nano RP2040 Connect的命名,不仅在micropython环境中有效,在Arduino环境中,同样有效。
对于需要通过WiFi模块间接控制的,系统会自动使用Nina模块进行处理,而不需要我们操心。
|