Hallo mal wieder, Aruduinofans,
ich schlage mich zur Zeit mit einem kleinern Problem rum, dass ich noch nicht wirklich lösen konnte, es geht um das Loggen von Daten.
Auch hier wieder das Projekt in wenigen Sätzen:
Ein Versuchsfahrzeug besitzt ein Arudino und einen 4d Systems Touchscreen als Glascockpit zur Anzeige der Werte, sowie eine SD Card. (Geloggt und Angezeigt werden zig Werte, wie GPS, Geschwindigkeit, Werte einer IMU, 10 Radsensoren, Motorwerte usw...)
Ebenfals können 5 verschiedene Parameter über Aktuatoren verändertet werden) funktioniert alles wunderbar.
Der Log erfolgt zur Zeit so, im main loop:
if (millis() >= timer3) //Ist die eingestellt Zeit abgelaufen wird ein Datensatz geloggt.
{
if(RecOn==1) sdwirte(); // sdwrite : Unterfkt öffnet Datei, schreibt werte, schließ datei usw...
timer3 = millis() + 50; //Hier also wenn delta t>50 ms
}
Das hat jedoch einen großen Nachteil. Der Log erfolgt wenn das Programm an dieser Stell ankommt und delta t gleich oder länger als 50ms ist. Zu spätern Auswertung ist das aber ungünstig, da der Log Beispielhaft etwas so aussieht:
t1 = 52 ms; t2 = 105 ms; t3 = 166 ms; t4 = 225 ms; usw...
Lässt sich das exakt lösen, ich denke da an einen Interrupt? Also das jede Aufzeichung exat bei t1=50 ms; t2 =100 ms; t3 = 150 ms; t4 = 200 ms;
Und wenn ja, wie muss das dann grob aussehen? (Noch nie benutzt)
Vielen Dank
Gruß Michael