检查车辆停放了多长时间

Checking how long vehicles have been parked

我正在用 micropython 编写一个程序,它应该能够判断车辆是否停在停车场 space 以及车辆停放了多长时间。我设法为一个传感器编写代码,但我希望代码能够一次检查多个传感器。我目前有两个正在测试的传感器,但我不知道如何让程序分别计算时间。我试过玩字典,但似乎无法正常工作。 基本上我希望每个传感器都连接到它们自己的 time.time()。因此,假设一辆车停在 sensor_1,我希望它开始为该传感器计数,直到传感器值回到 1(没有车停)我不确定这样做的正确方法是什么。任何帮助将不胜感激。

到目前为止,这是我的代码:

import time
from machine import Pin

def board_1():
    sensor_1 = Pin("P14", mode=Pin.IN)
    sensor_2 = Pin("P15", mode=Pin.IN)
    sensor_3 = Pin("P16", mode=Pin.IN)
    sensor_4 = Pin("P17", mode=Pin.IN)
    sensor_5 = Pin("P18", mode=Pin.IN)
    sensor_6 = Pin("P19", mode=Pin.IN)
    sensor_7 = Pin("P20", mode=Pin.IN)
    sensor_8 = Pin("P21", mode=Pin.IN)

    sensors = [sensor_1, sensor_2]

    time_parked = {"sensor_1" : 0, "sensor_2" : 0}

    while True:
        for i in sensors:
            if i.value() == 0:
                time_parked.update({str(i) : time.time()})
                if time.time() % 2 == 0:
                    print(keys, "parked")
                    time.sleep(5)



board_1()

我不太明白你在做什么。 反正

后面少了一个冒号
    for i in sensors**:**

第 24 行中的键尚未定义。您是说 i.keys() 吗?

初稿,等待有关您要完成的工作的更多信息。

import time
from machine import Pin

def board_1():
    sensor_1 = Pin("P14", mode=Pin.IN)
    sensor_2 = Pin("P15", mode=Pin.IN)
    sensor_3 = Pin("P16", mode=Pin.IN)
    sensor_4 = Pin("P17", mode=Pin.IN)
    sensor_5 = Pin("P18", mode=Pin.IN)
    sensor_6 = Pin("P19", mode=Pin.IN)
    sensor_7 = Pin("P20", mode=Pin.IN)
    sensor_8 = Pin("P21", mode=Pin.IN)

    # Set up mapping(dict) of sensor identification strings to sensor classes.
    sensors = {"sensor_1": sensor_1, "sensor_2": sensor_2}

    time_parked = {"sensor_1" : 0, "sensor_2" : 0}

    while True:
        # Iterate over sensor mapping. Use the sensor id string to 
        # fetch value from class. Then use the id string to update the
        # time_parked dict.
        for sensor in sensors:
            if sensors[sensor].value() == 0:
                time_parked.update({sensor : time.time()})
                # Not sure what the below is supposed to do?
                if time.time() % 2 == 0:
                    print(list(time_parked.keys()), "parked")
                    time.sleep(5)
            # Update to reset timer.
            elif sensors[sensor].value() == 1:
                time_parked.update({sensor : 0})




board_1()

需要回答的问题:

  1. 当sensor.value() == 1时如何处理?

  2. 目前您正在记录一个时间点。出于停车目的,您不想知道车辆实际停放的时间间隔吗?