gpt4 book ai didi

python - Micropython 链式移位寄存器的行为不符合预期

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:05 26 4
gpt4 key购买 nike

我是电子产品新手,并且一直在使用 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 时所有 LED 都会亮起, 1, 1, 1, 1] 移入。

所以我的第一个问题是为什么我的脚本没有点亮每个 LED,而之前的 LED 仍然亮着?如果您需要我进一步澄清,请告诉我!谢谢!

最佳答案

我修改了您的代码以打印 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 问题。但我首先会在将每个引脚拉高或拉低后添加一个时间延迟。

关于python - Micropython 链式移位寄存器的行为不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57743436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com