学习资料来自Get started with MicroPython on Raspberry Pi Pico

树莓派Pico(Raspberry Pi Pico)搭载RP2040微处理器,被设计用于物理计算(physical computing)。

控制LED

板上LED

导入所需模块

1
2
import machine
import utime

定义led_onboard,用于连接GP25,也就是连接板上LED的针(pin)。

1
led_onboard = machine.Pin(25, machine.Pin.OUT)

machine.Pin.OUT意味着此针被用作输出而非输入。

1
led_onboard.value(1)

value(1)意味着点亮LED,value(0)则代表关闭LED。

1
value(0)

为了实现“眨眼”的效果,使用

1
utime.sleep(2)

使LED持续点亮2秒。

完整代码:

1
2
3
4
5
6
7
8
9
10
import machine
import utime

led_onboard = machine.Pin(25, machine.Pin.OUT)

while True:
led_onboard.value(1)
utime.sleep(2)
led_onboard.value(0)
utime.sleep(2)

也可以使用toggle()函数,实现在“开”“关”之间的切换。这样,完整的代码应为:

1
2
3
4
5
6
7
8
import machine
import utime

led_onboard = machine.Pin(25, machine.Pin.OUT)

while True:
led_onboard.toggle()
utime.sleep(2)

外接LED

使用面包板:

de7b2b84cda14a5375c4153b0f4e4281.png

所需材料:

  • 一块面包板(bread board)
  • 若干公对公条线(male-to-male(M2M) jumper wires)
  • 一个LED
  • 一个330Ω(或接近)的电阻

如下图组装电路:

7920789be9a64da86b37da5f30e302f2.png

控制外接LED与控制自带的LED无异:

1
2
3
4
5
6
7
8
import machine
import utime

led_external = machine.Pin(15, machine.Pin.OUT)

while True:
led_external.toggle()
utime.sleep(2)

使用开关输入

LED等输入只是一方面,GPIO中的input/output部分意味着我们也可以用针脚进行输入。

如下图组装电路:

8a0ec51e97f6f348351acb71b3c538bb.png

同理,我们可以使用如下语句定义这个开关:

1
button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)

完整代码:

1
2
3
4
5
6
7
8
import machine
import utime

button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)

while True:
if button.value() == 1:
print("You pressed the button!")

摁下开关,命令行上就会输出“You pressed the button!”

联动输入输出

如图组装电路:

d01e2bff04b470694f3f62468841fde5.png

实物图:

d5fefdcc1d014634c50761aa6b318de2.jpg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import machine
import utime


led_external = machine.Pin(15, machine.Pin.OUT)
button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN)

lighting_time = 0.3 # unit: second

while True:
if button.value() == 1:
led_external.value(1)
utime.sleep(lighting_time)
print("You've pressed the botton, and the LED will light up for", lighting_time, "second(s)")
led_external.value(0)