拍身份证穿什么衣服| 艾草泡脚有什么功效| 汉城为什么改名叫首尔| 脖子痛什么原因| 打完升白针有什么反应| 深度睡眠是什么状态| o型血与b型血生的孩子是什么血型| 泡脚对身体有什么好处| 前列腺增大是什么意思| 被蟑螂咬了擦什么药| 10.25是什么星座| 捡到狗狗代表什么预兆| 晚上尿次数多什么原因| 拉肚子喝什么饮料| 孕早期吃什么好| 画龙点睛是什么生肖| 来袭是什么意思| 欢乐海岸有什么好玩的| 肾结晶是什么意思| 刷墙的白色涂料叫什么| 犯法是什么意思| 两边太阳胀痛什么原因引起的| 大便黑色是什么问题| 吃杨梅有什么好处| 单病种是什么意思| 离婚需要什么手续和证件| cima是什么证书| 维生素d有什么作用| 身体起水泡是什么病症| 梦见巨蟒是什么预兆| 丹凤眼是什么样| 智齿发炎吃什么药| 膝盖痒是什么原因| 左心室舒张功能减退是什么意思| 京剧脸谱黑色代表什么| 嘴唇上长疱疹用什么药| 11月份是什么星座的| 睡觉一直做梦是什么原因| 1994是什么年| 查激素挂什么科| 补办护照需要什么材料| 一什么湖水| pe是什么意思| 牛加一笔是什么字| 无家可归是什么生肖| 心水是什么意思| 生化妊娠后需要注意什么| 俊俏什么意思| 什么是功能性子宫出血| 家里有蜈蚣是什么原因| 宫内膜回声不均匀是什么意思| 人丹是什么| 机制是什么| 右脸突然肿了是什么原因| 跃字五行属什么| 脾胃不好吃什么水果好| 缺钾吃什么补| 女性hpv阳性是什么意思| 什么是强势的女人| 俞伯牙摔琴谢知音摔的是什么乐器| 尿酸高要注意什么饮食| 手麻看什么科| 什么牌子的冰箱最好| 海参有什么功效| 两点一线是什么意思| 谬论是什么意思| 花椒吃多了对身体有什么影响| 亨字五行属什么| 刻板印象是什么意思| 为什么北方人比南方人高| 超体2什么时候上映| 离卦代表什么| 落枕是什么原因| 王羲之的儿子叫什么名字| 拔胡子有什么危害| 精虫上脑是什么意思| 什么手串最好| 大白刁是什么鱼| 荠菜什么时候播种最好| 外翻是什么意思| 走四方是什么生肖| 热症是什么意思| mk是什么牌子| 六月二十三是什么日子| 检查尿常规挂什么科| 带状疱疹吃什么药| 靠山是什么意思| 犀利的眼神是什么意思| 06年属什么| 待字闺中什么意思| 心仪的人是什么意思| 双是什么意思| 餐标是什么意思| 子宫内膜3mm意味着什么| 法克是什么意思| 为什么射不出来| 卡地亚手表什么档次| 扑热息痛又叫什么名| 化疗后骨髓抑制是什么意思| 己卯日五行属什么| 霸王别姬是什么意思| 道是什么| 台湾什么时候统一| beer是什么意思| bata鞋属于什么档次| 骨头属于什么垃圾| 弓箭是什么时候发明的| 合加龙是什么字| Polo什么意思| 炙什么意思| ch什么意思| 小孩肠胃感冒吃什么药| 声带小结是什么意思| 今日什么冲什么生肖| 淋巴结发炎挂什么科| 低密度脂蛋白高的原因是什么| 茶叶蛋用什么茶叶最好| 什么水果是降火的| 晚上看见黄鼠狼有什么预兆| 须菩提是什么意思| 什么中药| 7月8号是什么星座的| 厚颜无耻是什么意思| 风湿病是什么引起的| 梦见老公出轨什么意思| π是什么意思| 四眼狗有什么迷信说法| 民政局局长什么级别| 减肥期间可以吃什么水果| 01年的属什么| tia是什么| 衣原体是什么| 华胥是什么意思| 血小板减少是什么症状| 龙利鱼是什么鱼| 腺样体增生是什么意思| 发烧39度吃什么药| 预防是什么意思| mtd是什么意思| 金牛男喜欢什么样的女生| 什么是国企单位| 山昆读什么| 改善是什么意思| 西瓜又什么又什么| 睡觉打呼噜是什么原因| 菠萝蜜不能跟什么一起吃| 红房子是什么| 黑户什么意思| 为什么会无缘无故长痣| 小处男是什么意思| 今日什么冲什么生肖| 膝关节疼痛吃什么药好| 遇难呈祥是什么生肖| 来例假腰疼是什么原因| 什么叫菩提| 等字五行属什么| 小便尿道刺痛吃什么药| 唐氏筛查和无创有什么区别| 盲人按摩有什么好处| 紫癜是什么原因引起的| 看到刺猬有什么预兆| 懵的意思是什么| 受精卵着床有什么感觉| 爬虫是什么| 小朋友喜欢玩什么| 三国是什么朝代| 孩子发烧吃什么药| 什么字五行属土| yy什么意思| 丝瓜什么时候种植最好| 查心电图挂什么科| 头晕吃什么药效果好| 左后脑勺疼是什么原因| 12月11号是什么星座| 树叶什么| 阴气重是什么意思| 蛇属于什么动物| 杭州的市花是什么花| 脚软没力气是什么原因引起的| cn是什么单位| 明星每天都吃什么| 午未合化什么| 芋头不能和什么一起吃| 阑尾炎可以吃什么| 细菌感染是什么原因| 苏州为什么不建机场| 前呼后拥是什么意思| 行政管理是做什么的| 肺部检查应该挂什么科| 切除一侧输卵管对女性有什么影响| 什么门不能开| 10.22是什么星座| 什么情况下会猝死| 松鼠咬人后为什么会死| co是什么| 什么叫做| 什么袍加身| 清明节什么时候| 百废待兴是什么意思| 生完孩子吃什么补身体| 肝火旺会出现什么症状| 梦见自己和别人吵架是什么意思| 家里起火代表什么预兆| 柔是什么意思| 优字五行属什么| 鹰头皮带是什么牌子| 大象灰配什么颜色好看| 42天产后检查都检查什么项目| 头皮屑多是什么原因引起的| 什么是树脂材料| esse是什么牌子的烟| 术前八项检查是什么| 命中劫是什么意思| 什么是胸推| 农业户口和非农业户口有什么区别| 腋窝淹了用什么药| 什么茶能去体内湿气| 什么水果不能上供| 什么是冰种翡翠| 合作医疗是什么| 左肋骨下方隐隐疼痛是什么原因| 吃什么水果能变白| 胃病忌什么| 突然发热是什么原因| 猪拉稀用什么药最快| 减肥去医院挂什么科| 批捕意味着什么| olay是什么牌子| 外阴白斑是什么病| 吃马齿菜有什么好处| 定亲是什么意思| 喜欢绿色的女人是什么性格| 逆时针揉肚子起什么作用| 狐臭的味道像什么味道| 208是什么意思| 月经来头疼是什么原因引起的| 浑身疼吃什么药管用| 甲醇对人体有什么伤害| 199是什么意思| 青霉素过敏不能吃什么药| 神经痛吃什么药| 胃绞痛吃什么药| 螳螂喜欢吃什么| 男性夜间盗汗是什么原因| 肚脐是什么穴位| 叒字什么意思| 穿云箭是什么意思| 咽喉炎吃什么药好得快| tps是什么意思| fl什么意思| 太阳筋疼是什么原因| 截单是什么意思| 梦见小蛇是什么意思| 孕妇什么水果不能吃| 降压药什么时候吃| 非那雄胺片是什么药| 75c是什么罩杯| 消化功能紊乱吃什么药| 兔子不吃窝边草是什么生肖| 怀孕能吃什么水果| 排骨汤什么时候放盐最好| 提手旁的字有什么| 泰坦尼克号女主角叫什么| 任性的女孩有什么特点| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 活动中心 ? 板卡试用 ? 【换取手持数字示波器】+pico驱动WS2812灯环

共1条 1/1 1 跳转至

【换取手持数字示波器】+pico驱动WS2812灯环

专家
2025-08-04 15:59:57   被打赏 40 分(兑奖)     打赏
百度 其实特斯拉眼下所面临的困境也正是纯电动车在推广过程中会面临的问题,就是概念过后如何解决本质的问题。

     树莓派pico不仅支持SPI和I2C控制器发送数据,它还有自己的特殊协议:可编程IO。今天就该话题展开学习,使用pico驱动一个12颗RGB灯环。在一般MCU中,可通过寄存器操作将指定的IO口输出高低电平,pico使用MicroPython语言去操作IO输出电平状态,显得更精简。

     树莓派pico与WS2812灯环模块连接如下:

VBUS-------->5V

GND--------->GND

GP0---------->DI

驱动WS2812.png

      使用Thonny软件编写代码如下:

import array, time
from machine import Pin
import rp2
from rp2 import PIO, StateMachine, asm_pio
 
# Configure the number of WS2812 LEDs.
NUM_LEDS = 12
 
@asm_pio(sideset_init=PIO.OUT_LOW, out_shiftdir=PIO.SHIFT_LEFT, autopull=True, pull_thresh=24)
def ws2812():
    T1 = 2
    T2 = 5
    T3 = 3
    label("bitloop")
    out(x, 1).side(0)[T3 - 1]
    jmp(not_x, "do_zero").side(1)[T1 - 1]
    jmp("bitloop").side(1)[T2 - 1]
    label("do_zero")
    nop().side(0)[T2 - 1]
 
# Create the StateMachine with the ws2812 program, outputting on Pin(22).
sm = StateMachine(0, ws2812, freq=8000000, sideset_base=Pin(0))
 
# Start the StateMachine, it will wait for data on its FIFO.
sm.active(1)

# Display a pattern on the LEDs via an array of LED RGB values.
ar = array.array("I", [0 for _ in range(NUM_LEDS)])

while True:
    print("blue")
    for j in range(0, 255):
        for i in range(NUM_LEDS):
            ar[i] = j
        sm.put(ar,8)
        time.sleep_ms(10)
     
    print("red")
    for j in range(0, 255):
        for i in range(NUM_LEDS):
            ar[i] = j<<8
        sm.put(ar,8)
        time.sleep_ms(10)
     
    print("green")
     
    for j in range(0, 255):
        for i in range(NUM_LEDS):
            ar[i] = j<<16
        sm.put(ar,8)
        time.sleep_ms(10)
     
    print("white")
    for j in range(0, 255):
        for i in range(NUM_LEDS):
            ar[i]=(j<<16)+(j<<8)+j
        sm.put(ar,8)
        time.sleep_ms(10)

下面就代码进行简要说明:

       代码中每秒发送800000位数据(注意频率是8000000,程序的每个周期是10个时钟周期)。每一位数据都是一个脉冲,一个短脉冲表示0,一个长脉冲表示1。数据进入状态机有两个阶段。第一个是称为先进先出(FIFO)的内存。这是主Python程序发送数据到的地方。第二个是输出移位寄存器(OSR),这就是out()指令获取数据的地方。两者通过拉指令连接,拉指令从FIFO获取数据并将其放在OSR中。然而,由于我们的程序设置了启用autopull的阈值为24,所以每次我们从OSR读取24位时,它将从FIFO重新加载指令out(x,1)从OSR中获取一位数据,并将其放入名为x的变量中(PIO中只有两个可用变量:x和y)。jmp指令告诉代码直接移动到特定的标签,但是它可以有一个条件。指令jmp(not_x,”do_zero”) 告诉代码,如果x的值为0(或者,在逻辑术语中,如果not_x为真,并且not_x是x的反面,在pio级别中,0为假任何其他数字为真),则移动到do_zero。

       在这里,我们跟踪一个名为ar的数组,它保存了我们希望LED拥有的数据。数组中的每个数字都包含了一盏灯上所有三种颜色的数据。格式上它是二进制的。使用PIO的一个问题是,你经常需要处理单个数据位。每一位数据都是1或0,数字可以通过这种方式建立,所以以10为基数的2就是二进制的10。以10为基数的3在二进制中等于11。二进制数的8位中最大的数是11111111,或者以10为基数的255。我们实际上把三个数字存储在一个数字中。这是因为在MicroPython中,整数存储在32位,但每个数字只需要8位。设置RGB颜色:前八位是蓝色,后八位是红色,最后八位是绿色。8位最多可以存储255 个数字,所以每个LED都有255个亮度级别。我们可以使用移位运算符<<来实现这一点。这将在一个数字的末尾加上一 定数量的0,所以如果我们想让LED的红色、绿色和蓝色亮度达到1级,我们将每个值都设为1。

         通过以上编程体验,可以得出如下结论:

PIO状态机使用的语言非常简洁,所以只有少量的指令。

in():移动1到32位到状态机;与out()类似,状态机相反。

push():将数据发送到连接状态机和主存的内存中MicroPython程序。

pull():从连接状态机和主存的内存块中获取数据MicroPython程序。这里我们没有使用它,因为通过在程序中包含 autopull=True,当我们使用 out() 时,会自动发生这种情况。

mov():在两个位置之间移动数据(例如x和y变量)。

irq():控制中断。如果需要触发一个特定的接口程序的MicroPython端运行,就可以使用这些

wait():暂停直到发生一些事情(例如 IO pin 更改了一个设定值或中断发生)。

       pico虽然只有少量的指令,但可以实现大量的通信协议。大多数指令都是用于以某种形式移动数据。如果需要以任何特定的方式准备数据,例如控制LED的颜色,这应该在主MicroPython程序中完成,而不是在PIO程序中。

环形彩灯.zip

12_WS2812.zip




关键词: 换取手持数字示波器     pico驱动WS2812灯环    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
hi是什么酸 95棉5氨纶是什么面料 苦涩是什么意思 康五行属什么 心包积液挂什么科
甘油是什么油 偏光是什么意思 夏天为什么这么热 东华帝君的真身是什么 舌苔发白是什么情况
hardy是什么意思 光感是什么意思 歆是什么意思 一流是什么意思 食管反流吃什么药最好
气短是什么原因引起的 夺嫡是什么意思 最贵的玉是什么玉 otc药是什么意思 颈椎看什么科
什么是理数hcv9jop5ns1r.cn 三点水翟读什么hcv8jop5ns7r.cn 黑马什么意思hcv9jop0ns9r.cn 3月3日什么星座hcv9jop0ns2r.cn 壳心念什么hcv9jop3ns9r.cn
时光如梭是什么意思hcv9jop5ns6r.cn 看腋臭挂什么科hcv9jop3ns5r.cn 屁股疼是什么原因引起的hcv8jop9ns5r.cn 卿本佳人什么意思sanhestory.com 轰20什么时候首飞hcv8jop6ns5r.cn
左下腹痛是什么原因hcv9jop3ns7r.cn 高血糖吃什么菜好adwl56.com 什么是慢性萎缩性胃炎0297y7.com 胃火重口臭吃什么药好hcv9jop7ns2r.cn 为什么日语hcv7jop9ns4r.cn
6月20日是什么节日hcv9jop1ns0r.cn 生理期吃什么比较好hcv8jop9ns0r.cn pct是什么材质0297y7.com 石英表不走了是什么原因bfb118.com 五岳是什么意思hcv9jop1ns4r.cn
百度