我是电子新手,一直在玩esp8266和Micropython。我试图让一对链式移位寄存器(sn74hc595)工作,以控制16个led,并努力理解我得到的结果。你知道吗
我的剧本如下:
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都会在重复之前单独亮起。 Google Drive Video Example
基于我的代码和对移位寄存器的初步了解,我希望当[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
被移入时,所有的led都会亮起来。你知道吗
所以我的第一个问题是,为什么我的脚本没有用前面的led点亮每个led?如果你需要我进一步澄清,请告诉我!谢谢!你知道吗
我修改了您的代码以打印
value
,然后是生成的bits[i]
值序列,得到:所以您生成了正确的位模式,但是您没有正确地将数据计时到移位寄存器中。你知道吗
假设
data
、clock
和latch
实际上是驱动输出管脚的,那么这是一个electronics问题,而不是MicroPython问题。但我会先在你把每根针调高或调低后加上一个时间延迟。你知道吗相关问题 更多 >
编程相关推荐