学习了官方的点灯方法, 接着我们自己实现流水灯效果. 使用全部的引脚作为输出, 为了方便使用排阻限流, 使用十个一组的指示灯,共计三组(其中有4盏灯因为Pico引脚不足, 不能点亮). 因为Raspberry Pi Pico只引出了26个GPIO引脚, 所以不加其它芯片的情况下,最多只能点亮26盏灯. (其中GPIO引脚连接的是板载LED), 还有一个A3连接的是温度传感器.
import time
import board
import digitalio
led0 = digitalio.DigitalInOut(board.GP0)
led1 = digitalio.DigitalInOut(board.GP1)
led2 = digitalio.DigitalInOut(board.GP2)
led3 = digitalio.DigitalInOut(board.GP3)
led4 = digitalio.DigitalInOut(board.GP4)
led5 = digitalio.DigitalInOut(board.GP5)
led6 = digitalio.DigitalInOut(board.GP6)
led7 = digitalio.DigitalInOut(board.GP7)
led8 = digitalio.DigitalInOut(board.GP8)
led9 = digitalio.DigitalInOut(board.GP9)
led10 = digitalio.DigitalInOut(board.GP10)
led11 = digitalio.DigitalInOut(board.GP11)
led12 = digitalio.DigitalInOut(board.GP12)
led13 = digitalio.DigitalInOut(board.GP13)
led14 = digitalio.DigitalInOut(board.GP14)
led15 = digitalio.DigitalInOut(board.GP15)
led16 = digitalio.DigitalInOut(board.GP16)
led17 = digitalio.DigitalInOut(board.GP17)
led18 = digitalio.DigitalInOut(board.GP18)
led19 = digitalio.DigitalInOut(board.GP19)
led20 = digitalio.DigitalInOut(board.GP20)
led21 = digitalio.DigitalInOut(board.GP21)
led22 = digitalio.DigitalInOut(board.GP22)
led26 = digitalio.DigitalInOut(board.GP26)
led27 = digitalio.DigitalInOut(board.GP27)
led28 = digitalio.DigitalInOut(board.GP28)
leds=[led0,led1,led2,led3,led4,led5,led6,led7,led8,led9,led10,led11,led12,led13,led14,led15,led16,led17,led18,led19,led20,led21,led22,led26,led27,led28]
for i in range(26):
leds[i].direction = digitalio.Direction.OUTPUT
while True:
for i in range(26): #正向移动
leds[i].value = True
time.sleep(0.1)
leds[i].value = False
time.sleep(0.1)
for i in range(24,1,-1): #回滚
leds[i].value = True
time.sleep(0.1)
leds[i].value = False
time.sleep(0.1)
这里还可以实现各种花式的流水灯效果.
网上的这位大神用移位运算实现用点灯方式显示变化的条形灯
raspberrypi-pico/micropython_gpio at main · stechiez/raspberrypi-pico · GitHub
import time
from machine import Pin
bargraph_led0 = Pin(9,Pin.OUT)
bargraph_led1 = Pin(8,Pin.OUT)
bargraph_led2 = Pin(7,Pin.OUT)
bargraph_led3 = Pin(6,Pin.OUT)
bargraph_led4 = Pin(13,Pin.OUT)
bargraph_led5 = Pin(12,Pin.OUT)
bargraph_led6 = Pin(11,Pin.OUT)
bargraph_led7 = Pin(10,Pin.OUT)
bargraph_value = 0
def bargraph(display_data):
bargraph_led0.value(1 if display_data&0x01 else 0)
bargraph_led1.value(1 if display_data&0x02 else 0)
bargraph_led2.value(1 if display_data&0x04 else 0)
bargraph_led3.value(1 if display_data&0x08 else 0)
bargraph_led4.value(1 if display_data&0x10 else 0)
bargraph_led5.value(1 if display_data&0x20 else 0)
bargraph_led6.value(1 if display_data&0x40 else 0)
bargraph_led7.value(1 if display_data&0x80 else 0)
time.sleep(1)
while True:
bargraph_value = 0
bargraph(bargraph_value)
for x in range (0,8):
bargraph_value |= (1 << x);
bargraph(bargraph_value)
print(hex(bargraph_value))
实验中最好使用这种灯条加个排阻,效果会很好啊.