Micropython链接移位寄存器的行为不符合预期

时间:2019-09-01 05:28:19

标签: python led electronics micropython shift-register

我是电子行业的新手,并且一直很喜欢esp8266和Micropython。我正在尝试使几个链接移位寄存器(sn74hc595)能够控制16个led,并且正努力了解我得到的结果。

我的脚本如下:

df$groups <- with(df, ave(SubID, ID, FUN = factor))

在我的视频中很难说出来,但是每个指示灯在重复之前都会单独点亮。 Google Drive Video Example

基于我的代码和对移位寄存器的基本了解,我希望当移入from machine import Pin import time def sixteen_bit(sleep_time=100): while True: for value in [1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535]: bits = [value >> i & 1 for i in range(15, -1, -1)] for i in range(15, -1, -1): data.value(bits[i]) clock.value(1) clock.value(0) latch.value(1) latch.value(0) time.sleep_ms(sleep_time) 时所有指示灯都会亮起。

所以我的第一个问题是,为什么我的脚本在以前的LED仍然点亮的情况下不点亮每个LED?让我知道您是否需要我进一步说明!谢谢!

1 个答案:

答案 0 :(得分:0)

我修改了您的代码以打印value,然后打印您生成的bits[i]值的序列,并得到:

1
1000000000000000
3
1100000000000000
7
1110000000000000
15
1111000000000000
31
1111100000000000
63
1111110000000000
127
1111111000000000
255
1111111100000000
511
1111111110000000
1023
1111111111000000
2047
1111111111100000
4095
1111111111110000
8191
1111111111111000
16383
1111111111111100
32767
1111111111111110
65535
1111111111111111

因此,您正在生成正确的位模式,但没有将数据正确地输入移位寄存器。

假设dataclocklatch实际上正在驱动您认为是的输出引脚,那么这是一个electronics问题,而不是MicroPython问题。但是,我将在将每个引脚设为高电平或低电平之后添加一个时间延迟。