Как устранить ошибку '<=' не поддерживается между экземплярами 'float' и 'NoneType' в pyFirmata? - PullRequest
0 голосов
/ 07 августа 2020

Я делаю код для автоматической c системы полива для своих растений, используя pyFirmata на Arduino, но я всегда получаю эту ошибку, когда пытаюсь запустить ее

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'

Когда я получил два ввода значения "val" из показаний датчика влажности почвы, подключенного к A0 на моей Arduino, и "waterlvl" из датчика воды, подключенного к D2 для печати, в результате вместо значения будет выдано только «None».

Я не знаю, что не так с моим кодом, так как 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

Итак, могу я спросить, как сделать Я решаю это?

...