Raspberry Pi Pico使用CricuitPython---(3)

学习了官方的点灯方法, 接着我们自己实现流水灯效果. 使用全部的引脚作为输出, 为了方便使用排阻限流, 使用十个一组的指示灯,共计三组(其中有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))

 实验中最好使用这种灯条加个排阻,效果会很好啊.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值