Citazione:
Originalmente inviato da marcosinatti Per evitare false commutazioni in maniera semplice e senza l'utilizzo di altre variabili, può bastare introdurre un pò di insteresi.
La commutazione avviene solo se dall'ultima volta c'è stato uno scostamento di almeno 2 punti.
LoopTemperatura:
gosub LetturaTemperatura
if Temperatura>TemperaturaOld+2 then
FlagSalita=1
TemperaturaOld=Temperatura
endif
if Temperatura<TemperaturaOld-2 then
FlagSalita=0
TemperaturaOld=Temperatura
endif
If FlagSalita=1 then
High Buzzer
else
Toggle Buzzer
Endif
Pause 300
Goto LoopTemperatura |
Preferisco sempre non basarmi sull'steresi ma su letture ripetute....
LoopTemperatura:
gosub LetturaTemperatura
if Temperatura>TemperaturaOld then
if FlagSalita<5 then
FlagSalita=FlagSalita+1
endif
else
FlagSalita=0
endif
if Temperatura<TemperaturaOld then
if Flagdiscesa<5 then
FlagDiscesa=FlagDiscesa+1
endif
else
FlagDiscesa=0
endif
If FlagSalita=5 then
TemperaturaOld=Temperatura
FlagBuzzer=2
else if FlagDiscesa=5 then
FlagBuzzer=1
TemperaturaOld=Temperatura
else
FlagBuzzer=0
Endif
Pause 200
If FlagBuzzer=2 then
High Buzzer
else if FlagBuzzer=1 then
Toggle Buzzer
else
Low Buzzer
endif
Goto LoopTemperatura
Più complesso ma sicuramente rimbalza meno sulle temperature stabili...