【发布时间】:2014-06-03 15:15:23
【问题描述】:
我正在尝试构建一个通过 RaspberryPi 控制 RGB LED 的程序。
我能够使用 pi-blaster 在 python 中构建一个简单的淡入淡出程序,它工作正常,但不能让我做我想做的事。
这是我的代码:
import time
import sys
import os
blue = 21
green = 23
red = 22
def fade(color, direction, step):
if direction == 'up':
for i in range(0, 100, step):
f=(i/float(100))
os.system('echo "%d=%f" > /dev/pi-blaster' % (color, f))
return fade(color, 'down', step)
else:
step=-step
for i in range (100, 0, step):
f=(i/float(100))
os.system('echo "%d=%f" > /dev/pi-blaster' % (color, f))
return fade(color, 'up', step)
input = raw_input("Choose a color (r, g, b): ")
if input == 'r':
fade(red, 'up', 1)
if input == 'g':
fade(green, 'up', 1)
if input == 'b':
fade(blue, 'up', 1)
问题是我希望能够通过外部脚本/程序控制淡入淡出。
我的想法是创建一个始终监听用户输入的脚本,因此当我键入“red”时,它会通过调用我之前发布的函数来停止正在进行的淡入淡出并开始一个新的红色淡入淡出。
我也希望能够改变循环的速度,但这已经在“淡入淡出”功能中实现了。
我真的不明白我怎么能做到这一点。我在这里阅读了一些内容,我想我可能必须使用线程功能,但我真的不明白这些功能如何适用于我的项目。
提前感谢您的帮助,并为我的英语不太好感到抱歉:)
编辑:
我使用循环检查键盘输入来解决它,然后使用多处理调用淡入淡出函数。
我现在可以使用 processName.terminate() 终止淡入淡出进程
【问题讨论】:
标签: python multithreading rgb led