如何解决pyFirmata上“float”和“NoneType”实例之间不支持的错误“<=”?

2024-06-01 09:14:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Arduino上的pyFirmata为我的植物制作一个自动浇水系统的代码,但当我试图运行它时,总是会出现这个错误

Traceback (most recent call last):
  File "C:/Users/wenbi/PycharmProjects/Helen/Automated watefring.py", line 43, in <module>
    if 0.5<=val<=0.7:
TypeError: '<=' not supported between instances of 'float' and 'NoneType'

当我从我的Arduino上连接到A0的土壤湿度传感器的读数中得到两个输入值“val”和从连接到D2的水传感器得到两个要打印的“waterlvl”时,结果只会给出一个“无” 而不是一个值

我不知道我的代码出了什么问题,因为Pycharm没有检测到任何问题

以下是我的代码供参考:

import time

from pyfirmata import Arduino, util

board = Arduino('COM4')

iterator = util.Iterator(board)
iterator.start()

LED5 = board.get_pin('d:5:o')
LED6 = board.get_pin('d:6:o')
LED7 = board.get_pin('d:7:o')
buzz_pin = board.get_pin('d:10:o')
waterdetect = board.get_pin('d:2:i')
soildetect = board.get_pin('a:0:i')
waterpump = board.get_pin('d:8:s')


def blinkLED6():
    for s in range(1):
        LED6.write(1)
        time.sleep(0.25)
        LED6.write(0)
        time.sleep(0.25)


def buzzalarm():
    for f in range(1):
        buzz_pin.write(1)
        time.sleep(0.25)
        buzz_pin.write(0)
        time.sleep(0.25)


while True:
    val = soildetect.read()
    waterlvl = waterdetect.read()
    if 0.5 <= val <= 0.7:
        LED5.write(1)
        if waterdetect == "True":
            buzzalarm()

        elif waterdetect == "False":
            waterpump.write(1)
            LED5.write(0)
            blinkLED6()
            if val <= 0.25:
                waterpump.write(0)
                LED7.write(1)
    if val < 0.5:
        continue

那么我能问一下如何解决这个问题吗


Tags: 代码inboardgetiftimepinsleep