本帖最后由 jinglixixi 于 2021-3-31 17:44 编辑
树莓派Pico的I/O口具有重要的作用,除了控制板载的LED,还可以使用Arduino接口所提供的I/O资源来控制风扇,乃至利用多个I/O口来实现流水灯等。
1.点亮外挂LED
利用LED灯的例程,借用Arduino接口的引脚,即可点亮外挂的LED,其效果如图1所示。
图1点亮外挂LED
2.风扇控制
在前面的基础上,若将LED换为风扇,则可对风扇的转速加以调节,其程序如图2所示。
图2 风扇控制程序
由于程序中调用了延时函数,故风扇处于时断时续的运行状态,自然其速度也就有了一定程度的下降,通电时间越短,则速度越低,其整体构成如图3所示。
图3硬件构成
此外,若利用板上的LED 来指示风扇的工作状态,则其程序如图4所示。
图4状态指示程序
图5 风扇转动效果
动画效果:
3.流水灯效果
板上只有一个LED是无法展示流水灯效果的,外挂一个多段的集成式LED显示块即可达到目的。
实现流水灯演示的程序如下:
import machine
import utime
l1 = machine.Pin(21, machine.Pin.OUT)
l2 = machine.Pin(20, machine.Pin.OUT)
l3 = machine.Pin(13, machine.Pin.OUT)
l4 = machine.Pin(18, machine.Pin.OUT)
l5 = machine.Pin(17, machine.Pin.OUT)
l6 = machine.Pin(16, machine.Pin.OUT)
l7 = machine.Pin(15, machine.Pin.OUT)
l8 = machine.Pin(14, machine.Pin.OUT)
while True:
l1.value(1)
utime.sleep_ms(200)
l1.value(0)
utime.sleep_ms(200)
l2.value(1)
utime.sleep_ms(200)
l2.value(0)
utime.sleep_ms(200)
l3.value(1)
utime.sleep_ms(200)
l3.value(0)
utime.sleep_ms(200)
l4.value(1)
utime.sleep_ms(200)
l4.value(0)
utime.sleep_ms(200)
l5.value(1)
utime.sleep_ms(200)
l5.value(0)
utime.sleep_ms(200)
l6.value(1)
utime.sleep_ms(200)
l6.value(0)
utime.sleep_ms(200)
l7.value(1)
utime.sleep_ms(200)
l7.value(0)
utime.sleep_ms(200)
l8.value(1)
utime.sleep_ms(200)
l8.value(0)
utime.sleep_ms(200)
图6流水灯效果
动画效果:
4.递增点亮效果
在流水灯的基础上,还可以将演示效果改为递增的点亮效果。
实现递增点亮效果的程序如下:
import machine
import utime
l1 = machine.Pin(12, machine.Pin.OUT)
l2 = machine.Pin(20, machine.Pin.OUT)
l3 = machine.Pin(13, machine.Pin.OUT)
l4 = machine.Pin(18, machine.Pin.OUT)
l5 = machine.Pin(17, machine.Pin.OUT)
l6 = machine.Pin(16, machine.Pin.OUT)
l7 = machine.Pin(15, machine.Pin.OUT)
l8 = machine.Pin(14, machine.Pin.OUT)
l1.value(0)
l2.value(0)
l3.value(0)
l4.value(0)
l5.value(0)
l6.value(0)
l7.value(0)
l8.value(0)
while True:
l1.value(1)
utime.sleep_ms(200)
l2.value(1)
utime.sleep_ms(200)
l3.value(1)
utime.sleep_ms(200)
l4.value(1)
utime.sleep_ms(200)
l5.value(1)
utime.sleep_ms(200)
l6.value(1)
utime.sleep_ms(200)
l7.value(1)
utime.sleep_ms(200)
l8.value(1)
utime.sleep_ms(200)
l1.value(0)
l2.value(0)
l3.value(0)
l4.value(0)
l5.value(0)
l6.value(0)
l7.value(0)
l8.value(0)
utime.sleep_ms(200)
图7递增点亮效果
动画效果: