#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
не будете иметь никакого эффекта, если вы нигде не получите доступ к его значению.