while循环if语句条件

时间:2017-03-09 09:46:16

标签: python micropython

我真的很难完成代码的最后一部分。

这是一些背景知识。此代码通过超声波传感器查找位于其前面的对象,如果存在,则通过http_get将其记录到Internet数据库中,如果没有对象,则只是每隔2秒查看一次。

除非有人在那里留下一个物品很长时间,否则我已经把所有东西都打了。看看代码,这将是有道理的。 (这只是代码的一部分)。

while True: 

#Setting the pins and taking the reading.
#In a while loop so that it continually does it.

  trig=machine.Pin(5,machine.Pin.OUT)
  trig.low()
  time.sleep_ms(2)
  trig.high()
  time.sleep_ms(10)
  trig.low()
  echo=machine.Pin(4,machine.Pin.IN)
  while echo.value() == 0:
    pass
  t1 = time.ticks_us()
  while echo.value() == 1:
   pass
  t2 = time.ticks_us()
  cm = (t2 - t1) / 58.0
  print(cm) #cm is the output that I use to determine if the object is there or not.

  if cm >= 15: #This means there is nothing there.
      time.sleep(1) 
  elif cm <= 15: #Because the distance is less than 15cm, something is there, and it logs it.
      http_get('URL')
      time.sleep(5)

所以现在,正如你所看到的,如果有人在那里离开对象不到5秒钟,那只会记录一次(对象的计数是至关重要的)。需要注意的是,如果有人忘记了那里的物体,或者将它留在那里10秒钟,它会记录两次,这是我们不能拥有的。所以,我需要这样的东西,但在语法上是正确的。

def checking():

    if cm >= 15:
        time.sleep(1) 
    elif cm <= 15:
        http_get('URL')
        time.sleep(5)

        while: cm <= 15:
            keep sensing but not logging.
            then, if the distance changes to back to more than 15cm,
            return back to the top. (because the object would be gone).

我希望这对你们来说已经足够清楚了。

请告诉我是否需要在任何地方进行澄清。

1 个答案:

答案 0 :(得分:-1)

使用标记检查距离是否超过15

flag_reset = 0

while True:

    (your_code)

    if cm >15:

        time.sleep(1)
        flag_reset = 0

    elif cm <=15 and flag_reset == 0:

        do_something()
        flag_reset = 1