【发布时间】:2015-12-30 04:37:22
【问题描述】:
目前,我的程序接受用户输入的眨眼长度和眨眼之间的延迟,然后在设定的时间内循环通过灯光。我有一个 RGB 灯也连接到 Pi,我想要它,这样根据灯闪烁的速度,RGB 灯会改变颜色。由于程序现在,RGB 灯将保持红色。我已经用不同的程序测试了 RGB 灯,它工作正常,所以我相当确定错误出在我的代码中,而不是接线。感谢您的帮助!
# @kalenpw
import RPi.GPIO as GPIO
import time
#use raspberry pi pin numbers
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
#GPIO output channels
GPIO.setup(31, GPIO.OUT)
GPIO.setup(32, GPIO.OUT)
GPIO.setup(33, GPIO.OUT)
GPIO.setup(35, GPIO.OUT)
GPIO.setup(36, GPIO.OUT)
GPIO.setup(37, GPIO.OUT)
GPIO.setup(38, GPIO.OUT)
GPIO.setup(40, GPIO.OUT)
#RGB Light
GPIO.setup(15, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(11, GPIO.OUT)
#Make LED blink
def blink(pin):
GPIO.output(pin,1)
time.sleep(lightOnDuration)
GPIO.output(pin,0)
time.sleep(lightOffDuration)
return
#turn on RGB led based off blink duration
def RGBTurnOn():
#turn on red
if lightOnDuration < .5:
GPIO.output(15,1)
#turn on green
elif lightOnDuration < 2:
GPIO.output(13,1)
#turn on blue
else:
GPIO.output(11,1)
#Get number from user TODO fix
def getFloat(message):
while True:
try:
userInput = float(input(message))
except ValueError:
print("Error(01): please enter a number.")
continue
else:
return userInput
break
#Get integer from user TODO fix
def getInt(message):
while True:
try:
userInput = int(input(message))
except ValueError:
print("Error(02): please enter an integer.")
continue
else:
return userInput
break
#Starts LED loop
def StartLoop():
RGBTurnOn()
for i in range(0,numberOfCycles):
blink(32)#5v green
blink(38)#5v yellow
blink(36)#5v blue
blink(40)#5v red
blink(37)#3v3 green
blink(35)#3v3 yellow
blink(33)#3v3 blue
blink(31)#3v3 red
#Get light on & off durations
lightOnDuration = getFloat("How man seconds for blink length?\n")
lightOffDuration = getFloat("How many seconds do you want between blinks?\n")
cycleDuration = (lightOnDuration + lightOffDuration) *8
cycleDurationString = str(cycleDuration) + " second(s)."
numberOfCycles = getInt("Enter total number of cycles please.\n"
"Each cycle will take aproximately " + cycleDurationString +"\n")
StartLoop()
GPIO.cleanup()
接线图:
RGB:http://i.imgur.com/4RxSD24.jpg
LED:http://i.imgur.com/DmZRCVJ.jpg?1
左红针 31 gpio 6
左蓝色针 33 gpio 13
左黄色针 35 gpio 19
左绿针 37 gpio 26
右红针 40 gpio 21
右蓝色针 36 gpio 16
右黄色针 38 gpio 20
右绿针 32 gpio 12
rgb红针pin 15 gpio 22
rgb 绿色 pin 13 gpio 27
rgb 蓝色针 11 gpio 17
【问题讨论】:
-
只要提及我猜哪个 I/O 引脚用于哪个 LED 就足够了。抱歉,我仍然看不到你使用了哪些 io 引脚。
-
@torxed 左侧红色引脚 31 gpio 6 左侧蓝色引脚 33 gpio 13 左侧黄色引脚 35 gpio 19 左侧绿色引脚 37 gpio 26 右侧红色引脚 40 gpio 21 右侧蓝色引脚 36 gpio 16 右侧黄色引脚 38 gpio 20 RIGHT 绿色针 32 gpio 12 rgb 红色针 15 gpio 22 rgb 绿色针 13 gpio 27 rgb 蓝色针 11 gpio 17
-
甜,现在这很有意义。我在手机上,否则我会尝试自己解决这个问题,建议在
GPIO.setup(31, GPIO.OUT)之后添加# RED Left等。便于阅读:)
标签: python colors raspberry-pi led