Forum

Einloggen | Registrieren | RSS  

Arduino Problem, von SD File lesen und in int ablegen (Elektronik)

verfasst von bastelix(R), 13.10.2020, 21:59 Uhr

Hallo Dieter,

bei uns ist soweit alles gut, hoffe bei euch auch.

Sorry, ich war gestern Abend zu platt um noch den Code anzuschauen.

Vorab, du darfst float und int nicht direkt vergleichen. float ist eine Gleitkommazahl und wird binär im IEEE-754 repräsentation gespeichert, int wird binär anders gespeichert (mir fällt grad nicht ein wie das heißt)
Wenn du jetzt float f = 3,5; mit int i = 5; vergleichst ist das Binär
f = 0100 0000 0110 0000 0000 0000 0000 0000
i = 0000 0000 0000 0000 0000 0000 0000 0101
wenn man den float nach int castest vergleichst du 5 mit 1080033280 was nur selten gut geht ;-)
Du kannst runden, was du ja dann auch gemacht hast. Noch besser wäre wenn du den Sollwert auch als float deklarierst und dann mit >= bzw <= vergleichst (Gleitkommazahlen nie mit == vergleichen, das kann wegen den Rundungsfehlern in der Binärrepräsentation gewaltig schief gehen!)

» myRTC.hours >= A_hour && myRTC.minutes >= A_minute && myRTC.hours <= B_hour
» Das geht wohl nicht mit größer und kleiner gleich.
Eigentlich schon die RTC verwendet uint8_t (das ist ein unsigned int mit 8 bit) und deine Variablen sind int (signed int 32 bit), so lange da keine negativen Zahlen im spiel sind funktioniert das. Der Bug muss irgendwo anders sitzen. Ich sehs aber spontan auch nicht.

» Habe jetzt noch eine Hilfsvariable eingesetzt die ich mit einer ==
» Zeitabfrage auf 1 setze und beim 2. Schaltpunkt wieder auf 0.
Damit sind deine Schaltpunkte halt immer auf die Minute genau. Wenn deine loop-Methode mal länger ungünstig lange läuft (z.B. weil viel mit der SD-Karte gemacht wird, etc.) kann es sein, dass ein Schaltzeitpunkt unter den Tisch fällt. Das ist dann ein Bug den man nur sehr schwer reproduzieren kann. Außerdem denke ich, dass da noch was anderes nicht passt weil die >=, <= eigentlich funktionieren sollten.

Ich komme die Woche leider nicht dazu das mal selber auszuprobieren, aber du könntest nochmal mit der alten Version testen und dir die Variablenwerte über Serial in die Konsole loggen lassen.
Serial.print("myRTC.hours = ";);
Serial.println(myRTC.hours);
und so weiter bis alle Werte rausgeloggt werden. Dann kannst du nachvollziehen warum der boolsche Term false ergibt, statt true.

Gruß
Bastelix



Gesamter Thread:

Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 23.02.2020, 13:33
Arduino Problem, von SD File lesen und in int ablegen - bastelix(R), 23.02.2020, 19:42
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 23.02.2020, 20:20
Arduino Problem, von SD File lesen und in int ablegen - bastelix(R), 24.02.2020, 00:16
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 24.02.2020, 08:47
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 24.02.2020, 10:46
Arduino Problem, von SD File lesen und in int ablegen - Hansen(R), 24.02.2020, 17:16
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 24.02.2020, 18:44
Arduino Problem, von SD File lesen und in int ablegen - bastelix(R), 25.02.2020, 00:19
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 25.02.2020, 18:56
Arduino Problem, von SD File lesen und in int ablegen - bastelix(R), 25.02.2020, 23:09
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 26.02.2020, 17:01
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 22.03.2020, 09:24
Arduino Problem, von SD File lesen und in int ablegen - bastelix(R), 26.03.2020, 23:24
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 12.10.2020, 17:53
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 13.10.2020, 09:58
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 13.10.2020, 12:55
Arduino Problem, von SD File lesen und in int ablegen - bastelix(R), 13.10.2020, 21:59
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 14.10.2020, 08:02
Arduino Problem, von SD File lesen und in int ablegen - bastelix(R), 14.10.2020, 22:58
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 16.10.2020, 09:31
Arduino Problem, von SD File lesen und in int ablegen - bastelix(R), 17.10.2020, 00:24
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 17.10.2020, 07:50
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 18.01.2021, 19:43
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 09.05.2021, 12:14
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 09.09.2021, 21:10
Arduino Problem, von SD File lesen und in int ablegen - bastelix(R), 10.09.2021, 00:24
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 10.09.2021, 06:29
Arduino Problem, von SD File lesen und in int ablegen - volvodidi(R), 10.09.2021, 20:53