我已经将LCD显示器连接到正在处理的项目中。我有许多输入/输出,并且我想根据输入的状态显示不同的消息。现在,在我开始复杂化/添加更多硬件之前。我需要一些帮助。当没有输入处于活动状态时,我希望液晶显示屏显示消息“正在等待输入”,然后,一旦接收到输入一,我就希望显示“输入活动中的输入”。我目前正在使用while true循环,但是一旦我清除LCD显示屏,就会出现问题,因为每次循环都会使屏幕上的文字产生脉冲。有没有更好的方法可以在while真实循环之外进行此操作?
这是我当前的代码
List<String> brands = brandsMap.value();
答案 0 :(得分:0)
当我使用Arduino做类似的事情时,我使用了一个标志。在那种情况下,我 did 需要具有一个While True:
等效项,因为这是开发板的主要过程,并且在加电时必须无限循环运行。
您现在遇到的问题(我想)是,每次循环遇到以下代码时,您都在创建脉冲:
mylcd.lcd_clear()
mylcd.lcd_display_string(...)
任何简单(尽管不确定)的解决方案都类似于(这是Python 3,works a bit differently用于2.7以上的字典迭代)。我还没有机会进行测试(所以我可能错过了一些东西/做过一些错别字),但希望您能想到:
inputs = {"Input17": False,
"Input23": False,
"Input24": False}
while True:
change_in_input = False
# check for change in inputs
for input in inputs:
if bool(pi_GPIO.read(input)) != bool(inputs[input]):
change_in_input = True
# update inputs based on change(s)
inputs[input] = pi_GPIO.read(input)
if change_in_input:
if not any(inputs.values()):
pi_GPIO.write(18, 1)
mylcd.lcd_clear()
mylcd.lcd_display_string("Awaiting Input", 1)
mylcd.lcd_display_string("Detection", 2)
elif inputs["Input23"]:
pi_GPIO.write(18, 0)
mylcd.lcd_clear()
mylcd.lcd_display_string("Input 1 Active", 1)
time.sleep(Debounce)