【发布时间】:2017-01-24 03:48:00
【问题描述】:
我正在尝试编写一个简单的脚本,告诉风扇(插入 GPIO 上的引脚 4)在某个温度下打开,如果温度更低,请关闭风扇。我从一些简单的东西开始,看看我是否可以根据温度控制风扇。这是我目前所拥有的:
import os
from time import sleep
import signal
import sys
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.OUT)
temp = os.popen('vcgencmd measure_temp').readline()
if temp > 65:
GPIO.output(4, True)
else:
GPIO.output(4, False)
当我运行它时,它要么似乎在运行,但即使温度几乎没有达到我写的水平,风扇也没有关闭,或者它会告诉我 pin 已在使用中,但它会无论如何继续。无论哪种方式,无论当前温度如何,风扇仍会运行。
vgencmd 返回如下: temp-37.0'C
如何删除非数字字符以使我被 int 卡住?当我执行它时,我得到了这个:
ValueError: invalid literal for int() with base 10: "temp=37.6'C\n"
注意:某些导入的模块尚未使用,这就是它们存在的原因。
【问题讨论】:
-
我不知道这是否会解决任何问题,但您需要在比较之前将 temp 转换为 int。试试:
if int(temp) > 65:另外,你没有在循环中运行任何东西,所以它会执行一次并完成。尝试在延迟约 0.1 秒的 while 循环内执行最后 5 行(包括读取温度) -
这不是论坛,您无需为缺乏经验而道歉。我建议您简化您的问题,并询问您实际上想要完成什么“我如何在 Raspberry Pi 3 上使用 GPIO 控制风扇”。
-
请查看我添加
measure_temp()的更新。
标签: python raspberry-pi gpio raspberry-pi3