Zeit anzeigen

Hallo,

ich habe heute angefangen mich mit dem Arduino Uno zu beschäftigen.
Ich habe einen Temp.-Sensor angeschlossen den ich soweit auch per diesem Seriell-Monitor auslesen kann.

Nun meine Frage: Wie kann ich dort die aktuelle PC-Zeit nach jedem Temp.-Wert anzeigen lassen?
Habe schon ein wenig gesucht, bisher aber nix gefunden.

Danke & Gruß

andy

Gar nicht. Wenn du eine echte Uhrzeit möchtest brauchst du eine Real Time Clock. Oder eventuell eine Software Uhr. Letzere muss man aber bei jedem Neustart neu stellen.

Man kann sich mit millis() die Zeit nach dem Einschalten des Arduinos anzeigen lassen. Damit kann man auch Differenzen zwischen zwei Ereignissen bilden. Oder Minuten und Sekunden daraus ableiten. Das reicht manchmal auch schon um Ereignisse zeitlich einzuordnen.

andy23:
Nun meine Frage: Wie kann ich dort die aktuelle PC-Zeit nach jedem Temp.-Wert anzeigen lassen?

Wie möchtest Du denn die aktuelle PC-Zeit vom PC zum Arduino übertragen?

Automatisch wäre nur folgendes möglich:
Beim Compilieren des Programms kannst Du einen "Zeitstempel mit der Compile-Zeit" in Dein Programm einbauen. Dieser Zeitstempel wird dann mit dem Programm zum Arduino übertragen und wenn das Programm startet, startet es mit dieser Zeit, die Du dann vom Controller über die "millis" Funktion weiterzählen lassen kannst.

Nachteil: Immer wenn das Programm neu gestartet wird, startet es natürlich mit immer demselben Zeitstempel, den das Programm beim Compilieren erhalten hat. D.h. jedesmal nach einem Power-On Reset, oder nach dem Schließen und Öffnen des seriellen Monitors, startet das Programm dann mit einer alten/falschen Zeit.

Ansonsten mußt Du Dir wegen der Zeit etwas überlegen:

  1. Das übliche wäre, eine "batteriegepufferte Echtzeituhr" (RTC, Realtime-Clock) an den Arduino anzuschließen, bei dem Du die Uhrzeit im Uhrenchip stellst, und bei ausgeschaltetem Arduino übernimmt die Batterie das Weiterzählen der Uhrzeit, so dass Du sie beim Programmstart wieder auslesen kannst. So macht es zum Beispiel auch Dein PC.

  2. Möglich wäre aber auch, die Zeit "von extern" abzuholen: Über ein DCF-Modul, über ein GPS-Modul, Du könntest die Zeit manuell über den seriellen Monitor eingeben und an den Arduino senden, oder wenn ein Ethernet-Shield angeschlossen und der Arduino mit dem Internet verbunden ist, könntest Du die Zeit per NTP-Zeitprotokoll aus dem Internet beziehen.

Jedenfalls: Wenn Du die Zeit nicht in den Arduino reinpackst, dann hat er keine absolute Zeit. Die Zeit selbst messen kann er nur ab dem Einschaltzeitpunkt, und zwar mit der Funktion "millis()", die die "Anzahl Millisekunden seit Programmstart" angibt.

Wenn du Arduino programmieren kannst, kannst du vielleicht auch PC programmieren (lernen).
Das ist was anderes, macht aber auch Spass. (wenn man entsprechend veranlagt ist :wink:
Du schreibst dir ein PC Programm, das die aktuelle PC Zeit anzeigt, eine serielle Verbindung zum Arduino hat und die von dort übertragene Temperatur anzeigt. ( Anstelle des SerialMonitor Programms )
Hast sehr viel schönere Grafische Möglichkeiten der Anzeige und die optimale Aufgabenverteilung:
PC die Benutzer-Oberflaäche, Arduino die Datenerfassung.

Die Verknüpfung mit der Uhrzeit wäre nur ein Beispiel, was man sinnvoll zwischen PC und Micro-Controller aufteilen könnte.