Как создать функцию таймера для M5 Stackfire в коде Visual Studio?

#python

Вопрос:

Мне нужна помощь в создании простого таймера для устройства контроля освещенности и температуры, а также включения или выключения вентиляторов и освещения на основе показаний. Но для обнаружения движения мне нужна функция обнаружения движения, для которой, если движение не обнаружено, зуммер будет гудеть в течение 10 секунд, а затем все приборы выключатся.

Тем не менее, мне трудно заставить таймер правильно вести обратный отсчет, но таймер просто замедлится на одну секунду и не будет продолжать обратный отсчет, и если я попытаюсь изменить его, это приведет к синтаксической ошибке.

Вот код для справки:

 TEMP_TH     = 27.0   # (celsius)
LIGHT_IN_TH = 180   #(lumens)
TIMER_TH    = 50  # (5 seconds / 0.1 = 500) (ms) 

# Global Variable to store measurements from ENV.II, LIGHT and PIR Units
TEMP     = 0
LIGHT_IN = 0
MOTION   = False

EFAN  = False
CFAN  = False
LIGHT = False


# Conventional Process1 Implementation
def backgroundProcess1():
  # Inputs:  TEMP, LIGHT_IN, TIMER, MOTION
  # Outputs: TIMER, BUZZER, EFAN (Relay 1), CFAN (Relay 2), LIGHT (Relay 3)
  global EFAN, CFAN, LIGHT

# Local and Global Variables
# Delay/Counter Variable. Time delay duration to turn off device.
TIMER  = 0
# Output: Exhaust Fan ON/OFF (True/False)
EFAN   = False
# Output: Ceiling Fan ON/OFF (True/False)
CFAN   = False
# Output: Light ON/OFF (True/False)
LIGHT  = False
# Output: Speaker ON/OFF (True/False)
BUZZER = False

# Conventional Process1 Entry Point
while(True):
    # Logic Operations    
    # Update Speaker Output and Generates Time Delay (Delay = 100ms) (UPDATED)
    if BUZZER == True:
        speaker.tone(1800, 50)
        time.sleep_ms(100)
    else:
        time.sleep_ms(100)

    if MOTION == True:
      BUZZER == False
      EFAN = True
      rgb.setColorAll(0x7CFC00)
      if LIGHT_IN < LIGHT_IN_TH and TEMP < TEMP_TH:
          LIGHT=True
          CFAN=False
      elif LIGHT_IN < LIGHT_IN_TH and TEMP>= TEMP_TH:
          LIGHT = True
          CFAN = True 
      elif LIGHT_IN > LIGHT_IN_TH and TEMP >= TEMP_TH:
          LIGHT = False
          CFAN = True
      elif LIGHT_IN > LIGHT_IN_TH and TEMP < TEMP_TH:
          LIGHT = False
          CFAN = False
    if MOTION == False:
        rgb.setColorAll(0xFF0000)
        for TIMER in range(0,TIMER_TH,10): #count up to a settable timer threshold (timer in ms)
            BUZZER == True
            if TIMER = TIMER_TH: #COMPARE VALUES
             EFAN == False     #COMPARES BOOLEAN
             LIGHT == False
             CFAN == False
             BUZZER == Falseenter code here
 

Итак, как мне это исправить, потому что ссылка, которая у меня есть, — это код в конце, где я продолжаю получать синтаксические ошибки? (Кстати, используя pyFirmata)

Комментарии:

1. == выступает за равенство и = за присвоение. Вы не можете этого сделать if variable = True и variable == True не будете иметь никакого эффекта, если вы нигде не получите доступ к его значению.