差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
mp_key_led [2021/10/04 00:29]
gongyusu [4. 将输入和输出放在一起]
mp_key_led [2023/07/31 15:59] (当前版本)
group003
行 1: 行 1:
 ## 用按键控制LED灯 ## 用按键控制LED灯
  
-我们开始将基本的电子元件连接到你的树莓派Pico上,并编写程序来控制和感知它们。树莓派Pico的RP2040微控制器在设计时就考虑到了物理计算,它的众多通用输入/​输出(GPIO)引脚让它可以与很多元器件进行连接和通信,允许我们构建项目,从照明LED到记录关于你周围世界的数据。+我们开始将基本的电子元件连接到你的[[rpi_pico|树莓派Pico]]上,并编写程序来控制和感知它们,就像我们的大脑可以控制我们的四肢,通过感知器官获取外界的反应。树莓派Pico的[[RP2040]]微控制器在设计时就充分考虑到了对外部硬件器件的连接、感知和控制,它有许多通用输入/​输出([[GPIO]])引脚来同各种元器件进行连接和通信,这样我们可以构建多种不同的项目,从最简单的点亮[[LED]]到记录关于你周围世界的数据。
  
  
行 10: 行 10:
 |LED|所在的板卡|对应的RP2040的GPIO管脚| |LED|所在的板卡|对应的RP2040的GPIO管脚|
 |蓝色LED|Pico核心板|25| |蓝色LED|Pico核心板|25|
-|红色LED|Pico学习板|19+|红色LED|Pico学习板|26
-|绿色LED|Pico学习板|18+|绿色LED|Pico学习板|22
-|蓝色LED|Pico学习板|17+|蓝色LED|Pico学习板|21
-|黄色LED|Pico学习板|16|+|黄色LED|Pico学习板|20|
  
 我们可以先考虑使用Pico核心板上的LED。 我们可以先考虑使用Pico核心板上的LED。
行 20: 行 20:
 {{ :​ledonpico.png |}} <WRAP centeralign>​ 树莓派Pico核心板上的LED位置 </​WRAP>​ {{ :​ledonpico.png |}} <WRAP centeralign>​ 树莓派Pico核心板上的LED位置 </​WRAP>​
  
-这个LED的工作原理和其它任何LED一样:​+这个[[LED]]的工作原理和其它任何LED一样:​
   * 通电时,它会发光   * 通电时,它会发光
   * 当它断电时,熄灭。   * 当它断电时,熄灭。
  
-板上的这颗LED连接到RP2040的通用输入/​输出引脚之一:GP25,正因为这个管脚已经用于在板上连接LED,所以在Pico核心板的板边输入输出管脚上就没有这个GP25了。虽然板上的这颗LED外,不能将任何其它外部硬件再连接到该管脚,但它可以像程序中的任何其它GPIO管脚一样处理,并且无需任何额外的元件就可以添加输出到程序中。+板上的这颗LED连接到RP2040的通用输入/​输出引脚之一:GP25,正因为这个管脚已经用于在板上连接LED,所以在Pico核心板的板边输入输出管脚上就没有这个GP25了。虽然板上的这颗LED外,我们不能将任何其它外部硬件再连接到该管脚,但它可以像我们程序中的任何其它GPIO管脚一样处理,并且无需任何额外的元件就可以添加输出到程序中。
  
 运行Thonny,配置它连接到Pico,点击进入脚本区域,然后写下下面的一行代码:​ 运行Thonny,配置它连接到Pico,点击进入脚本区域,然后写下下面的一行代码:​
行 32: 行 32:
 </​code>​ </​code>​
  
-这很短的一行代码对于在Pico上使用MicroPython是非常关键的,它加载或导入被称为“库”的MicroPython代码集合,在本例中是“machine”库,这个“machine”库包含了MicroPython与Pico和其它MicroPython兼容设备通信所需的所有指令,扩展了用于物理计算的语言。如果没有这一行命令,是无法控制Pico的任何GPIO管脚的,自然也无法使板载的LED点亮。+这很短的一行代码对于在Pico上使用MicroPython是非常关键的,它加载或导入被称为“库”的MicroPython代码集合,在本例中是“machine”库,这个“machine”库包含了MicroPython与Pico和其它MicroPython兼容设备通信所需的所有指令,扩展了用于物理计算的语言。如果没有这一行命令,我们是无法控制Pico的任何GPIO管脚的,自然也无法使板载的LED点亮。
  
 <WRAP center round tip 60%> <WRAP center round tip 60%>
 +
 **有选择地导入(import)** **有选择地导入(import)**
  
-在MicroPython和Python中都可以只导入库的一部分,而不是整个库,以节省内存,并有可能混合和匹配来自不同库的函数。在我们的示例中导入了整个库,在其它地方,可能会看到程序中有这么写的:+在MicroPython和Python中都可以只导入库的一部分,而不是整个库,以节省内存,并有可能混合和匹配来自不同库的函数。在我们的示例中导入了整个库,在其它地方,我们可能会看到程序中有这么写的:
 <code python> <code python>
 from machine import Pin from machine import Pin
行 44: 行 45:
 </​WRAP>​ </​WRAP>​
  
-“machine”库开放了所谓的应用程序编程接口(API)。这个名称听起来很复杂,但它准确地描述了它的作用:​ 为的程序或应用程序提供了一种通过接口与Pico通信的方法。+“machine”库开放了所谓的应用程序编程接口(API)。这个名称听起来很复杂,但它准确地描述了它的作用:​ 为我们的程序或应用程序提供了一种通过接口与Pico通信的方法。
  
 程序的下一行就提供了一个“machine”库API的示例:​ 程序的下一行就提供了一个“machine”库API的示例:​
行 52: 行 53:
 </​code>​ </​code>​
  
-这一行定义了一个名为led onboard的对象,并起了一个读起来非常容易理解的名字(比较友好),可以在稍后的程序中使用它来引用核心板上的LED。从技术上讲,可以使用任何名称,比如susan、gupta或fish-sandwich,但最好坚持使用描述变量目的的名字,以使程序更容易阅读和理解。+这一行定义了一个名为led onboard的对象,并起了一个读起来非常容易理解的名字(比较友好),我们可以在稍后的程序中使用它来引用核心板上的LED。从技术上讲,我们可以使用任何名称,比如susan、gupta或fish-sandwich,但最好坚持使用描述变量目的的名字,以使程序更容易阅读和理解。
  
-该行的第二部分调用machine库中的Pin函数。这个函数是专为处理的Pico的GPIO引脚。目前还没有GPIO管脚(包括连接到板载LED的GP25管脚)知道它们应该做什么。第一个参数,25,是要设置的管脚的编号;​ 第二个 machine.Pin.Out 是告诉Pico引脚应该用作输出而不是输入。+该行的第二部分调用machine库中的Pin函数。这个函数是专为处理我们的Pico的GPIO引脚。目前还没有GPIO管脚(包括连接到板载LED的GP25管脚)知道它们应该做什么。第一个参数,25,是我们要设置的管脚的编号;​ 第二个 machine.Pin.Out 是告诉Pico引脚应该用作输出而不是输入。
  
-这行代码只是完成了引脚的设置,但它还不能点亮LED,要点亮LED,需要通过程序告诉Pico把管脚打开,接着输入下面的一行代码:​+这行代码只是完成了引脚的设置,但它还不能点亮LED,要点亮LED,我们需要通过程序告诉Pico把管脚打开,接着输入下面的一行代码:​
  
 <code python> <code python>
行 71: 行 72:
  
  
-点击Thonny的“Run”按钮,将程序保存为Blink.py, ​会看到LED灯亮了起来。祝贺你!你已经编写了第一个物理计算程序!+点击Thonny的“Run”按钮,将程序保存为Blink.py, ​我们会看到LED灯亮了起来。祝贺你!你已经编写了第一个物理计算程序!
  
-然而,会注意到,LED一直亮着,​ 那是因为的程序告诉Pico打开它,但从来没有告诉它关闭它。如何关闭呢?可以在程序后面再添加一行:​+然而,我们会注意到,LED一直亮着,​ 那是因为我们的程序告诉Pico打开它,但从来没有告诉它关闭它。如何关闭呢?我们可以在程序后面再添加一行:​
  
 <code python> <code python>
行 79: 行 80:
 </​code>​ </​code>​
  
-然而,这一次运行这个程序,LED似乎永远不会亮起来,这是因为Pico的工作速度非常非常快,远远快于用肉眼看到的速度。LED亮了一下,在下一条指令就让它灭掉,亮的时间非常短暂,短暂到我们的眼睛无法看到。要解决这个问题,需要通过引入延迟来降低程序的执行速度进而延长LED亮的时间。+然而,这一次运行这个程序,[[LED]]似乎永远不会亮起来,这是因为[[rpi_pico|Pico]]的工作速度非常非常快,远远快于我们用肉眼看到的速度。LED亮了一下,在下一条指令就让它灭掉,亮的时间非常短暂,短暂到我们的眼睛无法看到。要解决这个问题,我们需要通过引入延迟来降低程序的执行速度进而延长LED亮的时间。
  
 回到程序的顶部,​ 在第一行的末尾单击并按回车键以插入新的第二行。在这一行输入:​ 回到程序的顶部,​ 在第一行的末尾单击并按回车键以插入新的第二行。在这一行输入:​
行 87: 行 88:
 </​code>​ </​code>​
  
-像导入“machine”库一样,这一行将一个新库 - '​utime'​库导入到MicroPython。这个库处理与时间有关的所有事情,从测量时间到在程序中插入延迟。+像导入“machine”库一样,这一行将一个新库 - '​utime'​库导入到[[MicroPython]]。这个库处理与时间有关的所有事情,从测量时间到在程序中插入延迟。
  
 到程序的底部,单击行led_onboard.value(1)的末尾,然后按回车以插入新行。键入:​ 到程序的底部,单击行led_onboard.value(1)的末尾,然后按回车以插入新行。键入:​
行 94: 行 95:
 </​code>​ </​code>​
  
-它将调用utime库中的sleep函数,这将使程序暂停输入的秒数 — 在本例中是5秒。+它将调用utime库中的sleep函数,这将使程序暂停我们输入的秒数 — 在本例中是5秒。
  
-再次单击Run按钮。这一次,会看到Pico上的板载LED灯亮了,保持灯亮5秒钟(可以试着数一数)然后再熄灭。+再次单击Run按钮。这一次,我们会看到Pico上的板载LED灯亮了,保持灯亮5秒钟(我们可以试着数一数)然后再熄灭。
  
 <WRAP center round tip 60%> <WRAP center round tip 60%>
 **UTIME vs TIME** **UTIME vs TIME**
  
-如果以前用Python编写过程序,将习惯于使用“time”的库。utime库是为像Pico这样的微控制器设计的版本——“u”代表“μ”,希腊字母“mu”,是“micro”的缩写。如果忘记并使用了导入时间,不要担心, MicroPython将自动使用utime库代替。+如果以前用[[Python]]编写过程序,将习惯于使用“time”的库。utime库是为像Pico这样的微控制器设计的版本——“u”代表“μ”,希腊字母“mu”,是“micro”的缩写。如果我们忘记并使用了导入时间,不要担心, MicroPython将自动使用utime库代替。
 </​WRAP>​ </​WRAP>​
  
-终于,我们可以让LED闪烁了。为此,需要创建一个循环,重写的程序如下:​+终于,我们可以让LED闪烁了。为此,我们需要创建一个循环,重写我们的程序如下:​
 <code python> <code python>
 import machine import machine
行 119: 行 120:
 </​code>​ </​code>​
  
-记住,循环中的行需要缩进四个空格,这样MicroPython就知道它们构成了循环。+记住,循环中的行需要缩进四个空格,这样[[MicroPython]]就知道它们构成了循环。
  
-再次点击“Run”图标,会看到LED开关打开5秒、关闭5秒、再打开,不断重复在无限循环。LED将继续闪烁,直到点击停止图标取消的程序和重置的Pico。+再次点击“Run”图标,我们会看到[[LED]]开关打开5秒、关闭5秒、再打开,不断重复在无限循环。LED将继续闪烁,直到我们点击停止图标取消我们的程序和重置我们的Pico。
  
 还有另一种方法可以处理相同的工作:使用toggle(切换),而不是显式地将LED的输出设置为0或1。删除程序的最后四行并替换它们,使其看起来像这样:​ 还有另一种方法可以处理相同的工作:使用toggle(切换),而不是显式地将LED的输出设置为0或1。删除程序的最后四行并替换它们,使其看起来像这样:​
行 135: 行 136:
 </​code>​ </​code>​
  
-再次运行程序,会看到和之前一样的活动:​板载LED会亮5秒、熄灭5秒,然后在无限循环中再次亮起来。会发现这一次的程序短了两行:​对它进行了优化。所有数字输出引脚都可以使用toggle()来简单地在开、关状态之间切换:+再次运行程序,我们会看到和之前一样的活动:​板载LED会亮5秒、熄灭5秒,然后在无限循环中再次亮起来。我们会发现这一次的程序短了两行:​我们对它进行了优化。所有数字输出引脚都可以使用toggle()来简单地在开、关状态之间切换:
   * 如果引脚目前是on,​ toggle()开关将让它变为off   * 如果引脚目前是on,​ toggle()开关将让它变为off
   * 如果引脚目前是off,toggle()开关将让它变为on   * 如果引脚目前是off,toggle()开关将让它变为on
行 142: 行 143:
 **挑战: 让LED点亮的时间更长** **挑战: 让LED点亮的时间更长**
  
-你会如何改变的程序来让LED灯亮更久?​ 多休息一会儿怎么样?​ 在LED开关打开和关闭的情况下,能使用的最小延迟是多少?​+如何改变我们的程序来让LED灯亮更久?​ 多休息一会儿怎么样?​ 在LED开关打开和关闭的情况下,我们能使用的最小延迟是多少?​
 </​WRAP>​ </​WRAP>​
  
 ### 2. 控制学习板上的LED ### 2. 控制学习板上的LED
-到目前为止,我们一直在使用树莓派Pico核心板,在其RP2040微控制器上运行MicroPython程序,改变板载LED的点亮和熄灭的状态。微控制器通常与更多的外部元器件一起使用,也正是为此,我们设计了这个基于Pico的学习板。在MicroPython中控制学习板上的LED与控制Pico核心板内部的LED没有什么不同,只是管脚的编号发生了变化而已。+到目前为止,我们一直在使用树莓派Pico核心板,在其[[RP2040]]微控制器上运行[[MicroPython]]程序,改变板载LED的点亮和熄灭的状态。微控制器通常与更多的外部元器件一起使用,也正是为此,我们设计了这个基于Pico的学习板。在MicroPython中控制学习板上的LED与控制Pico核心板内部的LED没有什么不同,只是管脚的编号发生了变化而已。
  
 打开Thonny,加载前面写好的的Blink.py程序。找到:​ 打开Thonny,加载前面写好的的Blink.py程序。找到:​
行 154: 行 155:
 </​code>​ </​code>​
  
-修改引脚编号,将它从连接到Pico核心板内部LED的引脚25更改为连接到学习板上红色LED的引脚19。这个LED的名称也最好随之修改,比如改为led_red。程序中所有用到该LED的地方,都要把名字修改过来:​+修改引脚编号,将它从连接到Pico核心板内部LED的引脚25更改为连接到学习板上红色LED的引脚26。这个LED的名称也最好随之修改,比如改为led_red。程序中所有用到该LED的地方,都要把名字修改过来:​
 <code python> <code python>
 import machine import machine
 import utime import utime
  
-led_red = machine.Pin(19, machine.Pin.OUT)+led_red = machine.Pin(26, machine.Pin.OUT)
  
 while True:  while True: 
行 173: 行 174:
  
 ### 3. 输入: 读取按钮开关 ### 3. 输入: 读取按钮开关
-前面的LED都是利用了GPIO的输出特性,其实RP2040的GPIO既可以做输出控制,也可以做输入状态监测使用。在树莓派Pico核心板上没有放置任何输入按键,在我们的学习板上特地放了两个轻触按键:+前面的LED都是利用了GPIO的输出特性,其实[[RP2040]][[GPIO]]既可以做输出控制,也可以做输入状态监测使用。在树莓派Pico核心板上没有放置任何输入按键,在我们的学习板上特地放了两个轻触按键:
 |按键|GPIO管脚编号| |按键|GPIO管脚编号|
 |KEY1|12| |KEY1|12|
行 181: 行 182:
 **隐藏起来的阻抗** **隐藏起来的阻抗**
  
-与LED不同的是,按钮开关不需要限流电阻。但它仍需要一个电阻器,用于上拉或下拉,取决于你的电路如何工作。没有上拉或下拉电阻,输入被称为浮动 - 这意味着它有一个“噪声”信号,即使你不按按钮,它也会触发。电路中的电阻在哪里?​ 藏在Pico的微控制器RP2040里,可以为每一个GPIO管脚编程电阻,根据电路的需要在MicroPython中设置为下拉电阻或上拉电阻。+与LED不同的是,按钮开关不需要限流电阻。但它仍需要一个电阻器,用于上拉或下拉,取决于你的电路如何工作。没有上拉或下拉电阻,输入被称为浮动 - 这意味着它有一个“噪声”信号,即使你不按按钮,它也会触发。电路中的电阻在哪里?​ 藏在Pico的微控制器[[RP2040]]里,可以为每一个[[GPIO]]管脚编程电阻,根据电路的需要在[[MicroPython]]中设置为下拉电阻或上拉电阻。
  
 有什么区别呢?​一个下拉电阻连接引脚接地,意思是当按钮没有按下时,输入是0。一个上拉电阻将引脚连接到3V3,这意味着当按钮没有被按下时,输入将是1。所有的电路在这本书中使用可编程电阻在下拉模式。 有什么区别呢?​一个下拉电阻连接引脚接地,意思是当按钮没有按下时,输入是0。一个上拉电阻将引脚连接到3V3,这意味着当按钮没有被按下时,输入将是1。所有的电路在这本书中使用可编程电阻在下拉模式。
 </​WRAP>​ </​WRAP>​
  
-加载Tonny,然后用通常的代码行启动一个新程序:​+加载[[Thonny_ide|Thonny]],然后用通常的代码行启动一个新程序:​
  
 <code python> <code python>
行 217: 行 218:
 import utime import utime
  
-key1 = machine.Pin(12,​ machine.Pin.IN,​ machine.Pin.PULL_DOWN)+key1 = machine.Pin(12,​ machine.Pin.IN,​ machine.Pin.PULL_UP)
 while True: while True:
-    if key1.value() == 1:+    if key1.value() == 0:
         print("​You pressed the button!"​)         print("​You pressed the button!"​)
         utime.sleep(2)         utime.sleep(2)
行 232: 行 233:
 实际上,这个电路将前两个电路合并成一个,你可能记得你使用引脚GP19驱动外学习板上红色的LED,并用引脚GP12读取学习板上的一个按键的状态,现在我们将输入按键和输出LED一起联动工作。 实际上,这个电路将前两个电路合并成一个,你可能记得你使用引脚GP19驱动外学习板上红色的LED,并用引脚GP12读取学习板上的一个按键的状态,现在我们将输入按键和输出LED一起联动工作。
  
-Tonny中启动一个新程序,并开始导入程序需要的两个库:​+Thonny中启动一个新程序,并开始导入程序需要的两个库:​
  
 <code python> <code python>
行 242: 行 243:
  
 <code python> <code python>
-led_red = machine.Pin(19, machine.Pin.OUT) +led_red = machine.Pin(26, machine.Pin.OUT) 
-key1 = machine.Pin(12,​ machine.Pin.IN,​ machine.Pin.PULL_DOWN)+key1 = machine.Pin(12,​ machine.Pin.IN,​ machine.Pin.PULL_UP)
 </​code>​ </​code>​
  
行 249: 行 250:
 <code python> <code python>
 while True: while True:
-    if key1.value() == 1:+    if key1.value() == 0:
 </​code>​ </​code>​
  
行 270: 行 271:
 import utime import utime
 led_red = machine.Pin(19,​ machine.Pin.OUT) led_red = machine.Pin(19,​ machine.Pin.OUT)
-key1 = machine.Pin(12,​ machine.Pin.IN,​ machine.Pin.PULL_DOWN)+key1 = machine.Pin(12,​ machine.Pin.IN,​ machine.Pin.PULL_UP)
 while True: while True:
-    if key1.value() == 1:+    if key1.value() == 0:
         led_red.value(1)         led_red.value(1)
         utime.sleep(2)         utime.sleep(2)
行 289: 行 290:
  
  
 +<WRAP center round tip 60%>
 +以下部分为其它与LED控制相关的参考案例。
 +</​WRAP>​
  
 ### 5. 案例汇总 ### 5. 案例汇总
行 297: 行 301:
 # rgb-blink.py # rgb-blink.py
  
-# RED LED - Pico GPIO 19 +# RED LED - Pico GPIO 26 
-# GREEN LED - Pico GPIO 18 +# GREEN LED - Pico GPIO 22 
-# BLUE LED - Pico GPIO 17 +# BLUE LED - Pico GPIO 21 
-# YELLOW LED - Pico GPIO 16 +# YELLOW LED - Pico GPIO 20  ​
 # EETree Info & Tech 2021 # EETree Info & Tech 2021
 # https://​www.eetree.cn # https://​www.eetree.cn
行 308: 行 312:
 import utime import utime
  
-led_red = machine.Pin(19, machine.Pin.OUT) +led_red = machine.Pin(26, machine.Pin.OUT) 
-led_green = machine.Pin(18, machine.Pin.OUT) +led_green = machine.Pin(22, machine.Pin.OUT) 
-led_blue = machine.Pin(17, machine.Pin.OUT) +led_blue = machine.Pin(21, machine.Pin.OUT) 
-led_yellow = machine.Pin(16,​machine.Pin.OUT)+led_yellow = machine.Pin(20,​machine.Pin.OUT)
  
  
行 381: 行 385:
 import utime import utime
  
-key1 = machine.Pin(12,​ machine.Pin.IN,​ machine.Pin.PULL_DOWN)+key1 = machine.Pin(12,​ machine.Pin.IN,​ machine.Pin.PULL_UP)
 key2 = machine.Pin(13,​ machine.Pin.IN,​ machine.Pin.PULL_UP) key2 = machine.Pin(13,​ machine.Pin.IN,​ machine.Pin.PULL_UP)
  
 while True: while True:
-    if key1.value() == 1:+    if key1.value() == 0:
         print("​key1 pressed"​)         print("​key1 pressed"​)
     ​     ​
行 399: 行 403:
 # interrrupt-toggle-demo.py # interrrupt-toggle-demo.py
  
-# RED LED - Pico GPIO 19 +# RED LED - Pico GPIO 26 
-# GREEN LED - Pico GPIO 18+# GREEN LED - Pico GPIO 22
  
 # KEY1 - Pico GPIO 12 # KEY1 - Pico GPIO 12
行 410: 行 414:
 import utime import utime
  
-led_red = machine.Pin(19, machine.Pin.OUT) +led_red = machine.Pin(26, machine.Pin.OUT) 
-led_green = machine.Pin(18, machine.Pin.OUT)+led_green = machine.Pin(22, machine.Pin.OUT)
  
 led_red.value(0) led_red.value(0)
 led_green.value(0) led_green.value(0)
  
-key1 = machine.Pin(12,​ machine.Pin.IN,​ machine.Pin.PULL_DOWN)+key1 = machine.Pin(12,​ machine.Pin.IN,​ machine.Pin.PULL_UP)
  
 def int_handler(pin):​ def int_handler(pin):​
行 427: 行 431:
     key1.irq(handler=int_handler)     key1.irq(handler=int_handler)
  
-button_red.irq(trigger=machine.Pin.IRQ_RISING, handler=int_handler)+key1.irq(trigger=machine.Pin.IRQ_FALLING ​, handler=int_handler)
  
 while True: while True:
行 440: 行 444:
 # switch-led-demo.py # switch-led-demo.py
  
-# RED LED - Pico GPIO 19 +# RED LED - Pico GPIO 26 
-# GREEN LED - Pico GPIO 18 +# GREEN LED - Pico GPIO 22 
-# BLUE LED - Pico GPIO 17+# BLUE LED - Pico GPIO 21
  
 # BLACK BUTTON - Pico GPIO 2 - Pin 4 # BLACK BUTTON - Pico GPIO 2 - Pin 4
行 452: 行 456:
 import utime import utime
  
-led_red = machine.Pin(19, machine.Pin.OUT) +led_red = machine.Pin(26, machine.Pin.OUT) 
-led_green = machine.Pin(18, machine.Pin.OUT) +led_green = machine.Pin(22, machine.Pin.OUT) 
-led_blue = machine.Pin(17, machine.Pin.OUT)+led_blue = machine.Pin(21, machine.Pin.OUT)
  
 led_red.value(0) led_red.value(0)
行 483: 行 487:
         led_blue.value(0)  ​         led_blue.value(0)  ​
 </​code>​ </​code>​
 +
 +### 点亮Pico板上的一颗LED
 +
 +<code python>
 +from machine import Pin,Timer
 +from time import sleep_us
 +
 +led = Pin(25, Pin.OUT)
 +tim = Timer()
 +
 +print("​Flash LED.")
 +
 +def tick(timer):​
 +    global led
 +    led.toggle()
 +
 +tim.init(freq=2,​ mode=Timer.PERIODIC,​ callback=tick)
 +
 +</​code>​
 +