HonestQiao 发表于 2024-11-22 01:46

【Follow me第二季第4期】任务一:极简环境+快速烧录+花样点灯+结果输出+小知识

本帖最后由 HonestQiao 于 2024-11-22 01:49 编辑

<p>Arduino&reg; Nano RP2040 Connect可以使用的开发环境非常多,常见的C/C++ Pico SDK、Arduino、PlatformIO、micropython、circuitpython等等,都能支持。</p>

<p>这里简单起见,使用了micropython环境,能够以最快的速度,第一时间跑起来。</p>

<p>&nbsp;</p>

<p><span style="font-size:18px;"><strong>一、安装IDE</strong></span></p>

<p>前往OpenMV官方,下载OpenMV IDE:&nbsp;<a href="https://openmv.io/pages/download">Download &ndash; OpenMV</a></p>

<p>按照自己的需要,下载对应操作系统的版本:</p>

<p> &nbsp;</p>

<p>我用的是macOS系统,下载了这个:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>不同系统下面,用法基本都差不多。</p>

<p>&nbsp;</p>

<p>安装完,打开运行:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p><span style="font-size:18px;"><strong>二、烧录固件</strong></span></p>

<p>在OpenMV IDE中使用Arduino&reg; Nano RP2040 Connect,可以非常简单的让你用上最新的micropython 适配OpenMV固件。</p>

<p>首次使用时,可以把Arduino&reg; Nano RP2040 Connect连到电脑,然后再连按两下按键:</p>

<p> &nbsp;</p>

<p>正确连按的情况下,电脑会出现一个U盘设备:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>没出来的话,尝试间隔时间少一点或者多一点。</p>

<p>&nbsp;</p>

<p>然后点击如图所示的连接图标:</p>

<p> &nbsp;</p>

<p>会提示找到DFU模式设备,并提示安装最新固件:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>点击确定,等待自动下载安装完成即可:</p>

<p> &nbsp;</p>

<p>安装完成提示如下:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>最终结果如下:</p>

<p> &nbsp;</p>

<p><span style="font-size:18px;"><strong>三、点灯</strong></span></p>

<p>Arduino&reg; Nano RP2040 Connect,有一个普通LED,和一个RGB LED。</p>

<p>普通LED,从Pinout可以看到:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>现在点亮这个普通LED,代码如下:</p>

<pre>
<code class="language-python">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)</code></pre>

<p>&nbsp;</p>

<p>然后点击左下角的运行即可执行代码:</p>

<p> &nbsp;</p>

<p>运行结果如下:</p>

<p>e1bb1759fb292c80cc52f7f00953be9b<br />
&nbsp;</p>

<p><span style="font-size:18px;"><strong>四、点亮RGB LED</strong></span></p>

<p>点亮RGB LED和点亮普通LED的方法,完全一样,就是RGB是三个LED,分别控制。</p>

<p>&nbsp;</p>

<p>从Pinout可以了解RGB LED:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>具体代码如下:</p>

<pre>
<code class="language-python">from machine import Pin
import time

# 设定GPIO引脚
leds_name = (
    "LEDR",
    "LEDG",
    "LEDB",
)

leds =


index = 0
while True:
    i = index % len(leds)
    print(leds_name, leds)
   
    for n in range(len(leds)):
      if n != i:
            leds.value(True)
            pass
   
    leds.value(False)
   
    index += 1
    time.sleep(0.3)</code></pre>

<p>&nbsp;</p>

<p>需要注意的一点就是,RGB LED,和普通LED,高低电平控制正好相反。</p>

<p>给RGB LED对应颜色的LED值True,实际上是熄灭,而值False,则是点亮。</p>

<p>&nbsp;</p>

<p>运行结果如下:</p>

<p>1ee963581dabdb563942adeee0719442<br />
&nbsp;</p>

<p><span style="font-size:18px;"><strong>五、任务一</strong></span></p>

<p>任务一具体为:<span style="background-color:#dddddd;">必做任务一:搭建环境并开启第一步Blink三色LED / 串口打印Hello DigiKey &amp; EEWorld!;</span></p>

<p>&nbsp;</p>

<p>根据任务需要,具体的代码如下:</p>

<pre>
<code class="language-python">from machine import Pin
import time

# 设定GPIO引脚
leds_name = (
    "LED",
    "LEDR",
    "LEDG",
    "LEDB",
)

leds =

HS = (
    True,
    False,
    False,
    False
)

print("Hello DigiKey &amp; EEWorld!")

index = 0
while True:
    i = index % len(leds)
    print(leds_name, leds, HS)
   
    for n in range(len(leds)):
      if n != i:
            leds.value(not HS)
            pass
   
    leds.value(HS)
   
    index += 1
    time.sleep(0.3)</code></pre>

<p>&nbsp;</p>

<p>在上面的代码中,把普通LED和RGB LED一起做为一组进行循环点亮,并在最开始输出需要的文字信息。</p>

<p>&nbsp;</p>

<p>运行后,串口输出如下:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>实际运行结果如下:</p>

<p>455ff67dc484ac7df382abd2dc792382<br />
&nbsp;</p>

<p>&nbsp;</p>

<p><span style="font-size:16px;"><strong>六、小知识</strong></span></p>

<p>在micropython 1.20及以后版本中,可以查看为特定开发板定制的micrpython的引脚命名信息,方便在代码中调用。</p>

<p>例如前面的代码中,使用了LED、LEDR、LEDG、LEDB的命名形式,来对应具体的LED:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>如果使用下面的形式:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>实际运行的时候,就普通LED被点亮了,而RGB LED没有动静。</p>

<p>这是因为普通LED,是连接到RP2040的,而RGB LED,则不是的。</p>

<p>&nbsp;</p>

<p>如果研究一下原理图,会发现RGB LED的连接:</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>它们居然是通过WiFi模块来间接控制的。</p>

<p>&nbsp;</p>

<p>而RGB LED的控制,通过命名来调用的话,系统就会自动处理了。</p>

<p>&nbsp;</p>

<p>要查看Arduino&reg; Nano RP2040 Connect定制的micropython环境有那些命名,可以通过下面的代码查看:</p>

<pre>
<code class="language-python">from machine import Pin

print(dir(Pin.board))</code></pre>

<p>这将会输出下面的数据:</p>

<pre>
<code class="language-python">['__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__']
</code></pre>

<p>从上面的输出可以看到,可用的LED命名:</p>

<ul>
        <li>板载LED:LED、LED_BUILTIN</li>
        <li>RGB LED的红色:LEDR、LED_RED</li>
        <li>RGB LED的绿色:LEDG、LED_GREEN</li>
        <li>RGB LED的蓝色:LEDB、LED_BLUE</li>
</ul>

<p>上面专门为Arduino&reg; Nano RP2040 Connect的命名,不仅在micropython环境中有效,在Arduino环境中,同样有效。</p>

<p>对于需要通过WiFi模块间接控制的,系统会自动使用Nina模块进行处理,而不需要我们操心。</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

Maker_kun 发表于 2024-11-22 15:14

<p></p>


<p>很用心的教程,又学到新知识了:pleased:</p>

秦天qintian0303 发表于 2024-11-22 21:14

<p>居然不用Arduino&nbsp; &nbsp;</p>

HonestQiao 发表于 2024-11-23 10:41

秦天qintian0303 发表于 2024-11-22 21:14
居然不用Arduino&nbsp; &nbsp;

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

ly87802541 发表于 2024-11-24 16:09

<p>很详细nice</p>

HonestQiao 发表于 2024-11-24 23:05

ly87802541 发表于 2024-11-24 16:09
很详细nice

<p>希望能帮到大家</p>
页: [1]
查看完整版本: 【Follow me第二季第4期】任务一:极简环境+快速烧录+花样点灯+结果输出+小知识