Ich denke die "üblichen Infos" (Board, Anwendung, ...) darf ich in dem Fall mal weg lassen
Anwendung:
Ich erhebe für ein Projekt Messdaten und schreibe diese auf eine MicroSD.
Damit ich in der Excel später nicht so viel Zeit verliere (Umrechnungen, Diagramme, Auswertung)
lasse ich mir unter loop() gleich die Zeit für Stunde, Minute und Sekunde in int berechnen und schreibe diese mit auf die SD.
Problem:
Nach ca. 9h und 4 Minuten springt die Berechnung auf einmal ins Minus und läuft ab da Rückwärts ...
Auszug Excel:
9
4
45
04
45
9:04:45
-9
-5
-20
-05
-20
-9:-05:-20
-9
-3
-10
-03
-10
-9:-03:-10
-9
-1
0
-01
00
-9:-01:00
-8
-58
-50
-58
-50
-8:-58:-50
-8
-56
-40
-56
-40
-8:-56:-40
-8
-54
-30
-54
-30
-8:-54:-30
Erklärung:
a) |...| = je 1 Spalte
b) |int Berechnung Stunde|int Berechnung Minute|... Sekunde|Excel Umformung Minute auf zwei Stellen (statt 1 = 01)|Excel Umformung Sekunde auf zwei Stellen (statt 1 = 01)|Ausgabe Gesamtzeit (Umformung Excel)|
Die Berechnung läuft mit:
//zusätzliche Variablen zur Berechnung der Verlaufszeit für Ausgabe+DatenLogger (Stunde, Minute, Sekunde) auf Basis "millis()"
int time = millis()/1000;
int hh = time / 60 / 60;
int min = time / 60 - time / 60 / 60 * 60;
int sek = time - time / 60 * 60;
Frage:
Woher kommt der plötzliche Rücklauf?
Nach meiner Recherche hat das nichts mit "int" zu tun und entweder ist das ein wirkliches Rätsel oder ich seh grad den Wald vor lauter Bäumen nicht
Bin sehr gespannt und bedanke mich vorab fürs mit rätseln
PS:
Falls Ihr doch "alle" Infos haben wollt, sagt bescheid - aber des wird ä laaaange Text ^^
Ich hoffe die Kategorie deutsch ist richtig, weitere Unterkategorien habe ich hier nicht gefunden
Edit: Prüfung auf Reproduktion läuft, daher leider noch keine verwertbare Aussage hierzu, aber 9h ist auch schwer unter zu bekomm^^
Das sind 9 * 60 * 60 + 4 * 60 = 32640
Eine 16 Bit Int Variable mit Vorzeichen kann Zahlen von -32,768 bis 32,767 darstellen wobei das höchste Bit das Vorszeichen darstellt und die restlichen 15 Bit das Zweierkomplement .
siehe: int - Arduino-Referenz
Darum ist Deine Aussage
"Nach ca. 9h und 4 Minuten springt die Berechnung auf einmal ins Minus und läuft ab da Rückwärts " völlig fisiologisch und nachvollziebar bei den Verwendeten Variabeltypen.
Nimm für millis() unsigned long Variablen. Da springt die Zahl nach 4,294,967,295 Sekunden wieder auf null (ca 136 Jahre)
Ohje, ich wusste ich sollte die Frage nicht stellen ^^
Vielen Dank euch!
Hatte auch den Verdacht Variable, hab aber dann falsch umegrechnet in der Eile.
Danke für eure Zeit!
@agmue
Ich antworte mal hier - dachte das passt nicht zu den Neujahrsgrüßen.
Habe vor zwei Jahren durch Spielerei, Interesse für eine Uni-Arbeit ein Arduino Starterkit bestellt und zum Thema H-Brücke geschrieben.
Danach hatte ich vor Geburt Tochter etwas Zeit und bin die einzelnen Projekte im Projektbuch durch (für alle Anfänger sehr empfehlenswert). Nun bin ich am Ende von meinem Studium und hab für die vorletzte "kleine" Arbeit das Ding ausgegraben und mir eine CO2-Messstation (DHT22, MH-Z19C, SPI MIcroSD und SSD1306 + LEDs gebaut. Einmal UNO einmal ESP8266 mit eigenem Webseiten abruf.
Die Codes bastel ich immer zusammen nachdem ich die Beispiel-Sketche (einzelne Parameter/Funktionen) verstanden hab + Forum + C/C++ Befehle.
Kurz um - ich bin sehr begeistert von dem Thema und ärgere mich wirklich sehr dass ich früher keine Elektronik- oder Informatikausbildung gemacht habe.
Nun ist es aber so und ich freue mich auf die Zeit nachdem Studium auf ein sehr geiles Hobby, bei dem es noch seeeehr viele Elektronik- und Programmierfragen gibt. Außerdem fallen mir einfach zig-1000 Sachen ein die ich mit dem Zeug gern bauen/machen würde...
Die Faszination kann einen schon mächtig packen, daher schließe ich gleich die Warnung an, die wichtigen Dinge im Leben darüber nicht zu vergessen, sie kann sich wie eine Sucht breit machen.
ESP8266/ESP32 haben schon eine Menge Potential, aber auch mit einem UNO bringt man nette Dinge zusammen.
Uhh das sieht nice aus, aber jetzt nicht böse nehmen ist das "verifiziert"?
Konnte dazu auf die schnelle nichts finden.
Nachdem was ich gelesen hab ist ja eben die besonderheit gerade das für C das x-x nicht Null ist und die gerade beim googeln gefunde <time.h> verwende ich nicht.
Hab eh schon arge KB-Platzprobleme bei dem lütten Speicher ^^
btw...
Ein schönes Projekt bei dem man sieht wie dolle doch die Resonatoren abweichen und die Temperaturkorrelation. Hab unter 20°C tatsächlich wie in einigen Arbeiten zu lesen mittlere Abweichungen von bis zu 1 Sekunde
Ja vielen Dank für das Angebot, das mach ich gern. Schaffe ich aber erst zu Ende der Woche.
Dienstag ist nächster Abgabetermin schwitz
Wenn Ihr wollt könnt ihr auch gern die ganze Arbeit haben (nach anonymisierung ), ist wirklich low-level und sollte für alle verständlich sein. Oder jemand von euch Profis liest mal drüber und wir ergänzen noch an passenden Stellen - macht aber natürlich nur Sinn wenn Ihr das hier im Forum verwenden könnt und wie gesagt frühestens Ende der Woche ^^
PS: Nach meiner Recherche sind es die zu großen Bibs und um die zu kürzen fehlt mir Programmierer KnowHow. (dht.h, spi.h, sd.h, mhz19.h, softwareserial.h und dann wahrscheinlich noch adafruit gfx und ssd1306. Eigentlich sollte der dht auch die onewire "wire.h" benötigen, aber es läuft auch ohne)