246|5

272

帖子

4

TA的资源

纯净的硅(初级)

楼主
 

【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模块进行处理,而不需要我们操心。

 

 

最新回复

很详细nice   详情 回复 发表于 昨天 16:09
点赞(2) 关注
 
 

回复
举报

223

帖子

3

TA的资源

一粒金砂(高级)

沙发
 

很用心的教程,又学到新知识了

 
 
 

回复

6088

帖子

6

TA的资源

版主

板凳
 

居然不用Arduino   

点评

没有规定,一定要用Arduino环境吧,虽然板子是Arduino基金会的  详情 回复 发表于 前天 10:41
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 
 

回复

272

帖子

4

TA的资源

纯净的硅(初级)

4
 

没有规定,一定要用Arduino环境吧,虽然板子是Arduino基金会的

 
 
 

回复

164

帖子

0

TA的资源

一粒金砂(中级)

5
 

很详细nice

点评

希望能帮到大家  详情 回复 发表于 昨天 23:05
 
 
 

回复

272

帖子

4

TA的资源

纯净的硅(初级)

6
 

希望能帮到大家

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表