我试着用RaspberryPi控制移位寄存器(74HC595)来闪烁一些led。基本上,我已经用Python重写了this Arduino code,但我所期待的直截了当的代码充其量是不稳定的。在
运行时,第一种模式工作正常,但第二种模式仅适用于LED 4-8。减少闪烁之间的延迟会产生更糟糕的结果。我在rpi2模型B.python2.7上运行raspianjessie。寄存器和LED由一个单独的5V电源供电,所有设备共用一个GND。在
import RPi.GPIO as GPIO ## import GPIO lib
import time ## import time lib
GPIO.setmode(GPIO.BOARD) ## use board pin numbering
GPIO.setup(7, GPIO.OUT) ## SER
GPIO.setup(11, GPIO.OUT) ## RCLK
GPIO.setup(12, GPIO.OUT) ## SRCLK
num_74hc595s = int(1)
num_pins = num_74hc595s * 8
registers = [False]*num_pins
def setPin(index, value):
registers[index] = value
def clearRegisters():
for i in range(num_pins-1, -1, -1):
registers[i] = False
def writeRegisters():
GPIO.output(11, False)
for i in range(num_pins-1, -1, -1):
GPIO.output(12, False)
val = registers[i]
GPIO.output(7, val)
GPIO.output(12, True)
GPIO.output(11, True)
##turn on odd LEDs
clearRegisters()
writeRegisters()
setPin(0, True)
setPin(2, True)
setPin(4, True)
setPin(6, True)
writeRegisters()
print (registers)
time.sleep(1)
clearRegisters()
writeRegisters()
setPin(1, True)
setPin(3, True)
setPin(5, True)
setPin(7, True)
writeRegisters()
print (registers)
time.sleep(1)
clearRegisters()
writeRegisters()
for i in range(0, 8): #lights up LEDs sequentially
clearRegisters()
writeRegisters()
setPin(i, True)
writeRegisters()
time.sleep(2)
GPIO.cleanup()
print ("Dunzo")
第一位
目前没有回答
相关问题 更多 >
编程相关推荐