Forum
Arduino Problem, von SD File lesen und in int ablegen (Elektronik)
Hi Dieter
» Kann es sein, das ich zwischen vor und nach 24:00 bzw 0;00 kein && sondern
» ein oder || setzen muss?
» etwa so:
» if (myRTC.hours >= A_hour && myRTC.minutes >= A_minute || myRTC.hours <=
» B_hour && myRTC.minutes <= B_minute && AlarmIsActiveLG == 1 && temp_trigger
» == 0 && temp <= schalt_temp)
Kann sein, ich kann mich leider nicht mehr genau erinnern was die A_* bzw. B_* Konstanten aussagen. (Ich verwende lieber sprechende Namen wie EINSCHALTZEITPUNKT_STUNDE_KLIMA und AUSCHALTZEITPUNKT_MINUTE_KLIMA )
(23 >= 22 && 5 >= 0 || 23 <= 22 && 5 <= 0) ergibt true
wegen
23 >= 22 -> true
5 >= 0 -> true
damit ist der erste term true und was hinter dem OR kommt wir garnicht mehr ausgewertet
(23 >= 22 && 5 >= 0 && 23 <= 22 && 5 <= 0) ergibt false
23 >= 22 -> true
5 >= 0 -> true
23 <= 22 -> false
Wegen dem AND wird dann 5 <= 0 garnichtmehr betrachtet weil FALSE in einem Teil-Term ergibt immer FALSE wenn alle Teil-Terme nur mit AND verknüpft sind.
Was mir grad noch auffällt, auch bei boolscher Algebra gilt Punkt vor Strich, Punkt ist in dem Fall AND (&&, Strich ist OR (||). 1 && 0 || 1 ist nicht das gleiche wie 1 && (0 || 1). Wenn ich in deinem Term mal Klammer gemäß der Regel einsetzte sieht der so aus
(myRTC.hours >= A_hour && myRTC.minutes >= A_minute) || (myRTC.hours <= B_hour && myRTC.minutes <= B_minute && AlarmIsActiveLG == 1 && temp_trigger == 0 && temp <= schalt_temp)
Wenn also Teil-Term "myRTC.hours >= A_hour && myRTC.minutes >= A_minute" false ergiebt dann ist es schon relativ egal was in B_* steht weil dann "AlarmIsActiveLG == 1 && temp_trigger == 0 && temp <= schalt_temp" das gleiche Gewicht haben wie "myRTC.hours <= B_hour && myRTC.minutes". Ich glaube du willst eher etwas in die Richtung
((myRTC.hours >= A_hour && myRTC.minutes >= A_minute) || (myRTC.hours <= B_hour && myRTC.minutes <= B_minute)) && (AlarmIsActiveLG == 1 && temp_trigger == 0 && temp <= schalt_temp)
Gruß
Bastelix
Gesamter Thread: