如何在循环中使用 for in 和 if 语句

How to use for in and if statement with loop

我对变量和语句有点问题。 所以我正在做一个项目,我必须使用不同的语句。

材料:

Pycom Lopy4+3.0扩展板,Flexiforce重量传感器,LoRa

现在这是我的代码:

import pycom
import machine
import time

############### Weightsensor ###############
def main():
    adc = machine.ADC()             # create an ADC object
    apin = adc.channel(pin='P16')   # create an analog pin on P16
    val = apin()                    # read an analog value

    if val < 50:
        print(val)
        print("Value to high")
        time.sleep(5)

if __name__ == "__main__":
    main()

我想达到什么目的?

像这样:

def main():
    while True:
        adc = machine.ADC()             # create an ADC object
        apin = adc.channel(pin='P16')   # create an analog pin on P16
        val = apin()                    # read an analog value

        if val < 20:
            print(val)
            print("Value to high")
            time.sleep(2.5)


if __name__ == "__main__":
    main()

但我不知道它是如何工作的,因为“val = apin()”是我的读数,我想将其用作变量。因此,如果该值变得更高,它表示。

工作代码:

def main():
    while True:
        adc = machine.ADC()             # create an ADC object
        apin = adc.channel(pin='P16')   # create an analog pin on P16
        val = apin()                    # read an analog value

        if val < 20:
            print(val)
            print("Weight is good")
            time.sleep(2.5)
        if val > 20:
            print(val)
            print("Weight is to high")
            time.sleep(2.5)



if __name__ == "__main__":
    main()

提前感谢您的帮助!

亲切的问候!

如果要比较val中的每个元素,那么:

for x in val:
   if x > 50:
       print(val)
       print('Value too high')

我想你想要一个 while 循环来重复调用 apin 直到它 returns 一个小于 50 的值。

def main():
    adc = machine.ADC()             # create an ADC object
    apin = adc.channel(pin='P16')   # create an analog pin on P16    
    while True:
        val = apin()
        if value > 50:
            break
        print(val)
        print("Value not high enough")
        time.sleep(5)

    print("Now value is high enough")