Multi-Timer-Class
|
02.12.2019, 19:34
Beitrag #1
|
|||
|
|||
Multi-Timer-Class
Die Multi-Timer-Class kann einen oder mehrere Ausgänge schalten, anhand einer Zeiten-Tabelle (Stunden, Minuten). Für jeden Ausgang kann eine extra Tabelle erstellt werden. Es werden immer Einschalt- und Ausschaltzeit eingetragen. Bis zu 20 Zeiten (voreingestellt, lässt sich aber auch erweitern) lassen sich festlegen pro Ausgang/Timer.
Außerdem habe ich das Beispiel so geschrieben, dass Millis() zum berechnen von Stunden/Minuten benutzt wird und man die Zeit auch schneller laufen lassen kann (Modellbahnbetrieb). Ich habe diverse Kommentare hinzugefügt, damit das Prinzip verständlich wird. Hier mal das Beispiel: Code: #include "MultiTimer.h" Und hier die MultiTimer.h: Code: #ifndef MULTI_TIMER_H_INCLUDED Und die MultiTimer.cpp: Code: #include "MultiTimer.h" Im ZIP-Archiv (Anhang) gibt's das Ganze nochmal zusammengepackt. |
|||
02.12.2019, 19:52
(Dieser Beitrag wurde zuletzt bearbeitet: 02.12.2019 19:52 von Tommy56.)
Beitrag #2
|
|||
|
|||
RE: Multi-Timer-Class
Ich würde evtl. nur den Pointer auf das sowieso vorhandene Array in der Instanz speichern. Da sparst Du die Kopie der Daten (RAM). Ist dann zwar nicht exakt gekapselt, aber auf unseren kleinen MC halte ich RAM-Ersparnis für wichtiger, als Designregeln.
Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
02.12.2019, 20:59
Beitrag #3
|
|||
|
|||
RE: Multi-Timer-Class
Eine sehr interessante Sache. Danke dafür!
Wenn ich es richtig verstehe sind alle Zeiten relativ und es bewirkt: Code: {1, 10, 1, 25} Nicht von 1:10 Uhr bis 1:25 Uhr. (es sei denn man schaltet den Controller um 00:00 Uhr ein) Gruß Arne Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort. |
|||
02.12.2019, 21:07
Beitrag #4
|
|||
|
|||
RE: Multi-Timer-Class
Da das meist für Modellanlagen benutzt wird, ist der Einschaltzeitpunkt wohl als 00:00 definiert
Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
03.12.2019, 05:10
Beitrag #5
|
|||
|
|||
RE: Multi-Timer-Class
(02.12.2019 20:59)ardu_arne schrieb: Wenn ich es richtig verstehe sind alle Zeiten relativ und es bewirkt:Das ist nur in dem Beispiel so, weil ich dort Millis() für die Uhrzeit verwende. Du kannst aber auch eine Echtzeituhr anschließen und "Hour, Minute" von dort übergeben, dann sind das echte Uhrzeiten. |
|||
03.12.2019, 11:05
Beitrag #6
|
|||
|
|||
RE: Multi-Timer-Class
(02.12.2019 19:52)Tommy56 schrieb: Ich würde evtl. nur den Pointer auf das sowieso vorhandene Array in der Instanz speichern. Da sparst Du die Kopie der Daten (RAM). Ist dann zwar nicht exakt gekapselt, aber auf unseren kleinen MC halte ich RAM-Ersparnis für wichtiger, als Designregeln.Ok, ich hab's jetzt doch noch geschafft Deinen Vorschlag umzusetzen. Vielleicht magst Du nochmal drüberschauen (Pointer und Co sind nicht gerade meine Stärke). MultiTimer.h: Code: #ifndef MULTI_TIMER_H_INCLUDED Code: #include "MultiTimer.h" Und das Beispiel: Code: #include "MultiTimer.h" |
|||
03.12.2019, 11:14
Beitrag #7
|
|||
|
|||
RE: Multi-Timer-Class
Sieht auf den ersten Blick gut aus. Ich nehme ja an, Du hast es getestet.
Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
03.12.2019, 11:26
Beitrag #8
|
|||
|
|||
RE: Multi-Timer-Class
(03.12.2019 11:14)Tommy56 schrieb: Sieht auf den ersten Blick gut aus. Ich nehme ja an, Du hast es getestet.Ja, funktionieren tut es und auch der Speicherverbrauch ist geringer: Code: Der Sketch verwendet 3980 Bytes (12%) des Programmspeicherplatzes. Das Maximum sind 32256 Bytes. Bei der alten Version: Code: Der Sketch verwendet 4012 Bytes (12%) des Programmspeicherplatzes. Das Maximum sind 32256 Bytes. Nur, falls Dir am Code noch etwas auffällt. |
|||
|
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste