Hallo
Mich würde interessieren ob die Möglichkeit auch bei der Time.h gibt wie sie es bei der DS1307.h gibt?
Usage Time t; // Define a structure named t of the Time-class
Bis dann
Ingo
Hallo
Mich würde interessieren ob die Möglichkeit auch bei der Time.h gibt wie sie es bei der DS1307.h gibt?
Usage Time t; // Define a structure named t of the Time-class
Bis dann
Ingo
Versteht wohl ausser mir auch sonst nicht jeder.
Welche Time.h meinst du ? Und welche DS1307.h ? Diese ?
Diese Time.h z.B.
verwendet den Datentyp time_t, und keine Klasse Time
Was bedeutet
Usage
in deiner Zeile ?
Hallo
Ja ich meine die beiden Bibliotheken.
Ich Versuches noch mal anders zu erklären.
z.B. für eine Zeitschaltsteuerung
Kommt in der Deklarierung:
Time ZeitschaltuhrAn;
Time ZeitschaltuhrAus;
Dann Braucht man im setup nur noch:
ZeitschaltuhrAn.hour = 9;
ZeitschaltuhrAn.min = 15;
ZeitschaltuhrAn.sec = 0;
ZeitschaltuhrAus.hour = 12;
ZeitschaltuhrAus.min = 0;
ZeitschaltuhrAus.sec = 0;
Mich würde interessieren ob es die Möglichkeit auch bei der Time.h gibt.
Weil ich auf der DS1307.h Bibliotheken gerne verzichten möchte.
Ich habe eine PDF zur DS1307.h bei gefügt und das was ich meine stecht unter „structures“ auf Seite 2 ganz oben.
DS1307.pdf (54.3 KB)
ob es die Möglichkeit auch bei der Time.h gibt
"Möglichkeit" hat das Problem, dass die Antwort immer Ja ist.
Ist so in diesert Time.h natürlich nicht drin und passt auch nicht so ganz...
Du kannst einfach
struct Time { byte sec; byte min; byte hour; byte day; byte mon; byte year;};
in deiner Version von Time.h dazuschreiben.
Dann brauchst du noch eine Funktion, die aus einer time_t eine Time machen.
In C++ nennt man das dann
class Time
{
public: // damit du wie gewünscht myTime.min lesend und schreibend verwenden kannst
byte sec; byte min; byte hour; byte day; byte mon; byte year;
Time ( time_t t); // um aus einer time_t Variablen ein Time Objekt zu erzeugen.
time_t Get(); // liefert die time_t zurück
}
Aber : deinem Beispiel nach brauchst du das Datum gar nicht ?
Falls das stimmt, stört es sogar eher.
Und du brauchst weder diese Time.h, noch DS1307.h, sondern einen eigenen 24hWecker oder eine
class Zeitschaltuhr, die du der Arduino-Gemeinde schenkst ...
Das ganze brauch ich für meine Aquarium Steuerung wo ich schon die Zeit von ein Zeitserver hole, da für brauch ich ja die Time.h. Ich möchte gerne auf die DS1307.h verzichten weil ich mir vorstellen kann um so kleiner der sketch ist um so stabiler läuft er.
Wo kommt den die class Time Funktion ihn?
Wo kommt den die class Time Funktion ihn?
Na, auf den Arduino
Ich verstehe deine Frage wohl nicht.
Du kannst alles entweder in den Ordner deines Sketches, oder in den Libraries Ordner in einen Unter-Ordner names Time, damit es für alle sketche zu verwenden ist.
Ich meine in welche Datei habe die in der Time.h eingefügt und beim überprüfen gab es ganz fiele Fehler.
Sorry.
Theoretisch ist es egal, praktisch ergeben sich unterschiedliche Feher-Effekte, je nach dem was man macht.
Am einfachsten packst du erstmal alles, was du zusätzlich zu Time.h ( und Time.cpp ) haben willst, in deinen sketch.
Damit erübrigt sich das Problem, ob extra Dateien gefunden werden.
Dann würde ich dir raten, da du <Time.h> verwenden willst, dein eigenes Objekt nicht Time zu nennen, um Verwechslungen zu vermeiden.
Wenn du also deinen sketch so anfängst:
#include <Time.h>
struct Uhr{byte sec; byte min; byte hour;};
Uhr ZeitschaltuhrAn;
Uhr ZeitschaltuhrAus;
void setup()
{
ZeitschaltuhrAn.hour = 8;
ZeitschaltuhrAn.min = 30;
ZeitschaltuhrAn.sec= 0;
}
void loop() { }
Das sollte fehlerfrei übersetzt werden.
(Benutzt natürlich Time.h gar nicht, und macht auch sonst nichts Sinnvolles)
Die nächste Frage ist dann, was deine "Uhr" ( oder wie du das Ding nennen willst ) genau können soll, ausser dass du eine Uhrzeit einstellst und sie wieder auslesen kannst...
Siehe auch hier für structs:
Time.h hat wie gesagt ein tm struct für die Zeit in lesbarer Form. Da gibt es dann die Methoden makeTime() und breakTime() um das mit einem time_t (Sekunden seit 1970) zu füllen, bzw. in einen time_t zu wandeln. Damit könnte man auch einfach zwei structs vergleichen.
Wenn man aber nur die Zeit bequem abspeichern will, kann man sich das struct auch selbst schreiben.
Das habe ich jetzt so weit verstanden aber sobald #include <Time.h> da bei ist kommt folgen Fehler Meldung:
C:\Program Files (x86)\Arduino\libraries\Time\DS1307RTC.cpp: In constructor 'DS1307RTC::DS1307RTC()':
C:\Program Files (x86)\Arduino\libraries\Time\DS1307RTC.cpp:32: error: 'Wire' was not declared in this scope
C:\Program Files (x86)\Arduino\libraries\Time\DS1307RTC.cpp: In static member function 'static void DS1307RTC::read(tmElements_t&)':
C:\Program Files (x86)\Arduino\libraries\Time\DS1307RTC.cpp:56: error: 'Wire' was not declared in this scope
C:\Program Files (x86)\Arduino\libraries\Time\DS1307RTC.cpp: In static member function 'static void DS1307RTC::write(tmElements_t&)':
C:\Program Files (x86)\Arduino\libraries\Time\DS1307RTC.cpp:87: error: 'Wire' was not declared in this scope
Dann probier mal danach oder davor noch #include <Wire.h>
Bei mir ist die Reihenfolge:
#include <DS1307RTC.h>
#include <Time.h>
#include <Wire.h>
Mit #include <Wire.h> funktioniert es.
Habe es auch in ein Sketch aus probiert wie auch mein Menü aufgebaut ist und das kommt wohl nicht ohne DS1307.h aus. Habe das Beispiel im Anhang.
menue_test_ohne_DS1307.zip (5.7 KB)
Das habe ich jetzt so weit verstanden aber sobald #include <Time.h> da bei ist kommt folgen Fehler Meldung:
C:\Program Files (x86)\Arduino\libraries\Time\DS1307RTC.cpp: In constructor 'DS1307RTC::DS1307RTC()':
C:\Program Files (x86)\Arduino\libraries\Time\DS1307RTC.cpp:32: error: 'Wire' was not declared in this scope
Ich dachte du hast gar keine DS1307 und willst die Zeit von einem ntp Server holen ? ? ?
Wofür ist dann DS1307RTC.cpp gut ?
( Klar, DS1307 bräuchte <Wire.h> )
Ich hab mal kurz auf menue_test_ohne_DS1307.ino geschaut und gesehen, dass das
#include <DS1307.h>
...
DS1307 rtc(24, 25);
enthält.
DS1307.h und DS1307RTC sind auch zwei verschiedene Sachen, oder ?
Bin verwirrt ...
Frohes neues Jahr
Das wegen möchte ich ja auch auf der DS1307.h verzichten.
Weil ich ja die Time.h auch benutze und die am besten nur noch nutzen Wiehl.