gpt4 book ai didi

python - 如何根据温度读数打开/关闭 LED?

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

我将以下模型 DS18B20 连接到 Arduino,该 Arduino 是 Raspberrypi 的从属设备。当温度超过 29 度时,我试图打开 Arduino 上的 LED 13。我设法做到这一点的唯一方法是在 while 循环内。有什么办法可以在 while 循环之外执行此操作但保持读数运行吗?我的代码如下所示:

def led on()
def led off()
def function():
while True:
"Get Temp readings from arduino and display them"
If Temp > 29:
"Led on"
function()

因为在 while 循环内对我没有帮助。我想要类似当 LED 亮起时执行一次的函数,然后使用 while 循环继续忽略 LED 亮起并仅查找临时读数。也许这没有意义,但假设我有一个函数可以按顺序运行多个 LED,而不是一个 LED。

最佳答案

您尝试过使用有限状态机吗?使用 python 确实非常简单和高效。只需创建一个全局状态变量,并定义“READING_TEMP”、“CHECKING_LED_STATES”等状态。在无限 while 内,您可以包含多个 if-then 来检查状态。

如果您想忽略 led on,您可以创建另一个函数,例如 current_led_sate()is_led_on()。如果您有多个 LED,可以使用位掩码。我喜欢位掩码,因为 LED 状态可以仅使用 1 位来表示。

或者也许使用线程对你来说会更容易。检查一下: 导入时间 导入线程

def get_temp():
#return temperature

def is_led_on():
#return led state, true or false

#Temperature threshold in celsius degrees
TEMP_THD = 29

def temp_thread():
while(True):
Temp = get_temp()
if( Temp>TEMP_THD):
if(is_led_on()==False):
led_on()
time.sleep(2)

t = threading.Thread(target=temp_thread)
t.start()

while (True):
time.sleep(0.1)

关于python - 如何根据温度读数打开/关闭 LED?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58564312/

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