我有一个小项目我正在努力,这很简单,所以我希望有人可以帮助我。
我使用树莓派用一些非常粗糙的PWM调暗单个LED。
我的PWM代码如下所示:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(7, GPIO.OUT)
frequency = 0.005
dwell = 0.0001
while True:
time.sleep(frequency)
GPIO.output(7, 1)
time.sleep(dwell)
GPIO.output(7, 0)
基本上,为了让LED保持亮起,亮度由" dwell"我需要那段代码才能永远循环。
我想做的是使用像
这样的东西dwell=raw_input('brightness:')
这样当PWM代码循环时,我可以输入一个新的停留值来调整LED的亮度。
到目前为止,我所做的所有努力都会产生以下结果之一:a:调光循环仅执行一次并停止等待输入 b:调光循环将无限执行但不允许进一步输入
你们中的一个好人能为我提供一个代码示例来解释我如何实现这个目标吗?
对于那些感兴趣的人,最终我想做的是通过插座设置停留值,并使用更好的PWM输出形式来驱动LED筒灯。宝贝步骤:)
答案 0 :(得分:0)
看起来你需要multithreading!
# import the module
import threading
# define a function to be called in the other thread
def get_input():
while True:
dwell=raw_input()
# create a Thread object
input_thread=threading.Thread(target=get_input)
# start the thread
input_thread.start()
# now enter the infinite loop
while True:
time.sleep(frequency)
GPIO.output(7, 1)
time.sleep(dwell)
GPIO.output(7, 0)
这里可能遗漏了locks或semaphores或mutex...es (mutices?),但我对此并不了解。像这样的简单事情似乎对我有用。