LCD脉冲讯息

时间:2018-11-18 17:04:57

标签: python lcd

我已经将LCD显示器连接到正在处理的项目中。我有许多输入/输出,并且我想根据输入的状态显示不同的消息。现在,在我开始复杂化/添加更多硬件之前。我需要一些帮助。当没有输入处于活动状态时,我希望液晶显示屏显示消息“正在等待输入”,然后,一旦接收到输入一,我就希望显示“输入活动中的输入”。我目前正在使用while true循环,但是一旦我清除LCD显示屏,就会出现问题,因为每次循环都会使屏幕上的文字产生脉冲。有没有更好的方法可以在while真实循环之外进行此操作?

这是我当前的代码

List<String> brands = brandsMap.value();

1 个答案:

答案 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)