Я пытаюсь зачитать 5 микропереключателей и подсчитать, сколько активных и какие.В этом я преуспел.Тем не менее, я также хотел бы знать, сколько берется, когда дверь открыта (doorstatus == 0
означает, что она открыта).Есть ли способ обнаружить изменение в состоянии двери, кроме использования while doorstatus == 1 do
?Например: цикл if then, который обнаруживает изменение состояния двери с 0 на 1
Мой код прямо сейчас (который не работает):
if global.doorstatus == 1 then -- door closed
checkMicroswitches() -- checks the microswitches
calculateFree() -- calculates the amount and place of free microswitches
global.numberFreeStart = global.numberFree
global.rfidTakenCheck = 0
end
msg.payload = global.numberFreeStart
msg.topic = "numberFreeStart"
sendTo(4, msg)
while (global.doorstatus == 0) do -- door open, rfidTakenCheck = total taken while door was open
checkMicroswitches()
calculateFree()
global.numberFreeEnd = global.numberFree
global.rfidTakenCheck = global.numberFreeStart - global.numberFreeEnd
msg.payload = {}
msg.payload = global.rfidTakenCheck
msg.topic = "rfidTakenCheck"
sendTo(3, msg)
if global.doorstatus == 1 then
break
end
end
Программа зависает из-зацикл while, так что я бы хотел это изменить.Однако я не знаю как.