gpt4 book ai didi

python - LCD 脉冲消息

转载 作者:太空宇宙 更新时间:2023-11-03 21:33:49 25 4
gpt4 key购买 nike

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

这是我当前的代码

import I2C_LCD_driver
import time
import pigpio

mylcd = I2C_LCD_driver.lcd()

Debounce = 0.5

Input23 = 23
Input24 = 24
Input17 = 17
Output18 = 18
Output4 = 4

pi_GPIO = pigpio.pi()
pi_GPIO.set_mode(Input23, pigpio.INPUT)
pi_GPIO.set_pull_up_down(Input23 , pigpio.PUD_UP)
pi_GPIO.set_mode(Input24, pigpio.INPUT)
pi_GPIO.set_pull_up_down(Input24 , pigpio.PUD_UP)
pi_GPIO.set_mode(Input17, pigpio.INPUT)
pi_GPIO.set_pull_up_down(Input17 , pigpio.PUD_UP)
pi_GPIO.set_mode(Output18, pigpio.OUTPUT)
pi_GPIO.set_mode(Output4, pigpio.OUTPUT)

while True:

if pi_GPIO.read(Input23):
pi_GPIO.write(18, 0)
mylcd.lcd_clear()
mylcd.lcd_display_string("Input 1 Active", 1)
time.sleep(Debounce)
else:
pi_GPIO.read(Input23)
pi_GPIO.write(18, 1)
mylcd.lcd_clear()
mylcd.lcd_display_string("Awaiting Input", 1)
mylcd.lcd_display_string("Detection", 2)
time.sleep(Debounce)

最佳答案

当我用 Arduino 做类似的事情时,我使用了一个标志。在这种情况下,我确实需要有一个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)

关于python - LCD 脉冲消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53363399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com