ich möchte eine einfach zu bediehnende Schaltuhr bauen.
Sie soll folgenede Funktion aufweisen:
Die Uhrzeit wird über einen RTC DS1302 generiert und an einem LCD ausgegeben -> ist erledigt
es soll eine Schaltzeit generiert werden aus einer festen Zeit und einem bediehnbaren Wert
Die schaltzeit soll vor der festen Zeit liegen
eventuell soll die Uhrzeit mittels DCF synchrnisiert werden.
ich habe es geschafft die Uhrzeit zu stellen und auf einnem LCD anzuzeigen.
jetzt möchte ich die Uhrzeit natürlich weiterverarbeiten .
Nur weiß ich nicht wie ich die Uhrzeit von der RTC überneme und wie ich sie dann in ein passendes Format zur Verarbeitung der Schaltzeiten wandele.
hier mal der Sketch :
// Schaltuhr für Elektroheizung
//
// I assume you know how to connect the DS1302 and LCD.
// DS1302: CE pin -> Arduino Digital 10
// I/O pin -> Arduino Digital 11
// SCLK pin -> Arduino Digital 12
// LCD: DB7 -> Arduino Digital 7
// DB6 -> Arduino Digital 6
// DB5 -> Arduino Digital 5
// DB4 -> Arduino Digital 4
// E -> Arduino Digital 9
// RS -> Arduino Digital 8
#include <LiquidCrystal.h>
#include <DS1302.h>
int AusgangLadung = 13;
float Ladezeit;
int ZeitLadeende;
int LadeDauer;
int Aktuell;
// Den DS1302 initialisieren
DS1302 rtc(10, 11, 12);
// Das LCD initialisieren
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
void setup()
{
rtc.halt(false); // setzt die Uhr in den run-Modus
rtc.writeProtect(false); // Hebt den Schreibschutz auf
// Einstellen auf ein LCD mit 16x2 Zeichen
lcd.begin(16, 2);
// hier wird die Zeit gesetzt ( Achtung wenn das Einstellen erfolgt ist dann auskommentieren und nochmals übertragen )
rtc.setTime(17, 30, 0);
}
void loop()
{
// Uhrzeit anzeigen
lcd.setCursor (0, 0);
lcd.print("Uhrzeit");
lcd.setCursor(8, 0);
lcd.print(rtc.getTimeStr());
// 1s Warten bis Programm weitergeführt wird
delay (1000);
}
Hallo,
wenn du ein array deklarierst:
int UhrDaten[7];
dann stehen nach
RTC.get(UhrDaten,true);
folgende Werte in den Variablen
UhrDaten[0]) die Sekunden
UhrDaten[1]) die Minuten;
UhrDaten[2]) die Stunden;
UhrDaten[3] der Tag der Woche;
UhrDaten[4]) der Tag;
UhrDaten[5]) der Monat;
UhrDaten[6]) das Jahr;
und die kann man dann problemlos weiter verarbeiten
Der DS1337 benötigt einen Uhrenquarz mit 6pF. Ich habe bei mehreren Distributoren verschiedene Quarze bestellt. Angeblich sollten da auch welche mit ca. 6pF dabei sein. Die Genauigkeit habe ich aber nie besser als ca. 10s Fehler/Tag hinbekommen.
Ich benutze jetzt den PCF8583, der lässt sich mit einem C-Trimmer tunen. Jetzt hab ich bei Raumtemperatur einen Fehler von ca. 2s im Monat.
Danke für die Antworten.
Da ich bereits zwei DS1302 habe möchte ich bei diesen auch bleiben.
Den Vorschlag von maverick1509 habe ich ausprobiert.
Zur Befehlszeile rtc.get(UhrDaten,true) erscheint folgende Fehlermeldung: Schaltuhr_Elektroheizung_Test1:50: error: 'class DS1302' has no member named 'get'
Meine Library wird auch klein geschrieben , maverick1509 vieleicht gehst Du von einer anderen Bibliothek aus.
Wie erfahre ich mehr über die möglichen Befehle und Funktionen einer Bibliothek.
Wie erfahre ich mehr über die möglichen Befehle und Funktionen einer Bibliothek.
"mehr" heisst mehr als die vorhandenen Examples laufen lassen ? :
In die include Datei schauen: Alles was public ist, sollte verwendet werden können.
Was genau die Funktionen machen, muss man evtl. dann in der .cpp Datei nachlesen.
Danke für die Hilfe
Ich habe den Sketch mal so erweitert wie Du beschrieben hast.
Doch leider wird beim Kompeilieren folgender Fehler ausgegeben:
rtc.get(UhrDaten,true); Felermeldung: In function 'void loop()':
error: 'class DS1302' has no member named 'get'
Ich interpretier das mal so dass die Lib den Befehl get nicht kennt obwohl get in rot dargestellt wird was nach meiner Erkenntnis bedeutet dass der Befehl in der Lib vorkommt.
Auf der Seite des Autors der Lib ( Electronics - Henning Karlsen ) habe ich die Beschreibung der Bibliotek angeschaut hier wird der Befehl rtc.getTime(); // Read current time and date. genannt.
Wenn ich die Zeile in rtc.getTime(UhrDaten,true); error: expected constructor, destructor, or type conversion before
Hier vermute ich mal dass ich die Daten die an das Array übergeben werden noch konvertieren muss aber Wie.
Kann mir da eventuell noch jemand helfen.
DS1302 rtc(2, 3, 4); // Start an instance of the DS1302 class (Parameters: CE, IO, CLK Arduino Pins)
in deinem Sketch?
Soviel ich weiss, braucht's das bei der "normalen" 1307 library nicht, da wird ein Objekt namens rtc gleich vorgegeben.
Ausserdem solltest du erklären, warum du als Parameter (Uhrdaten, true) übergibst, oder es ändern.
Schau dir die (passende) Doc und die zur library mitgelieferten Beispiele an.
Die Farbgestaltung in der Arduino IDE ist "schwach". Alles was irgendwo als Schlüsselwort definiert ist, wird bunt.
Versuch mal, eine Variable ** ** status** **
zu nennen, die sieht anders aus als wenn sie ** ** zustand** **
hiesse...
ich verwende die Lib DS1302.h und Du die DS1307.h ich habe den RTC-Baustein DS1302 ich glaube den 1302 kann ich mit der 1307`er Lib nicht betreiben oder?
Was bedeutet die Lib wProgramm ?
Wenn ich Dein sketch lade bekomme ich beim Kompilieren folgende Fehlrmeldungen:
In file included from sketch_jul14c.cpp:3:
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:47: error: 'boolean' has not been declared
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:48: error: 'boolean' has not been declared
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:55: error: 'byte' does not name a type
jetzt habe ich endlich mal wieder Zeit mich um mein Schaltuhr-Projekt zu kümmern.
Ich habe mir jetzt ein DS1307 Shield gebaut. Mit dem Testsketch funktioniert es sogar.
Doch wenn ich den Sketch von Bernward versuche zu übertragen gibts jede Menge Fehlermeldungen:
In file included from sketch_jul22b.cpp:3:
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:69: error: stray '#' in program
In file included from sketch_jul22b.cpp:3:
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:73:11: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:74:10: error: invalid suffix "px" on integer constant
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:74: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:75:17: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:77:13: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:80: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:83: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:86:11: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:86:16: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:86:21: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:86:26: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:87:13: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:93:13: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:96:15: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:100:11: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:100:16: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:100:21: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:104:10: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:106:17: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:112:10: error: invalid suffix "px" on integer constant
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:116:10: error: invalid suffix "px" on integer constant
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:117:11: error: empty character constant
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:122:10: error: invalid suffix "px" on integer constant
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:146: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:316:3: error: invalid preprocessing directive #file_flipper
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:317:3: error: invalid preprocessing directive #file_flipper
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:318:3: error: invalid preprocessing directive #file_flipper
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:319:3: error: invalid preprocessing directive #file_flipper
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:614: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:618: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:630: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:642: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:650: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:654: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:658: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:662: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:666: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:670: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:674: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:682: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:690: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:702: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:710: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:714: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:722: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:726: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:730: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:734: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:738: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:742: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:746: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:754: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:862: error: stray '#' in program
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:885:20: error: empty character constant
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:1060:3: error: invalid preprocessing directive #review_nav
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:1061:14: error: invalid suffix "px" on integer constant
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:1062:15: error: invalid suffix "px" on integer constant
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:1063:14: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:1065:3: error: invalid preprocessing directive #review_nav
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:1068:3: error: invalid preprocessing directive #review_nav
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:1069:10: error: exponent has no digits
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:1318:288: error: empty character constant
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:5: error: expected unqualified-id before '<' token
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:24: error: 'var' does not name a type
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:25: error: 'var' does not name a type
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:26: error: expected constructor, destructor, or type conversion before '.' token
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:30: error: expected constructor, destructor, or type conversion before '.' token
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:34: error: expected `)' before '{' token
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:38: error: expected unqualified-id before ')' token
E:\Arduino\Software\Windows\arduino-1.0.1\libraries\DS1307/DS1307.h:40: error: expected unqualified-id before '<' token
ich komme mit meinem Schaltuhr Projekt leider immer noch nicht weiter.
Mitlerweile bin ich wieder beim DS1302 angelangt.
Die Ausgabe der Uhrzeit auf dem LCD funktioniert ja bereits.
mittels lcd.print(rtc.getTimeStr()); wird die Uhrzeit ans LCD gesendet.
mittels dem gleichen Befehl müsste doch auch die Uhrzeit irgend wo anderst geschickt werden können ( z.B. in den Speicher ) hiermit könnte ich dann doch eher was anfangen.
danke für die Antwort.
Aber genau da ligt mein Problem ich bekomme es nicht hin den String weiter zu verarbeiten .
Ich muß zugeben dass ich mich noch nicht so gut auskenne.
Könnte mir da jemand helfen?
Wenn Du uns jetzt noch verraten würdest was Du mit dem String machen willst, dann könnte man Dir vieleicht helfen. Aber ein: ich kriege "es" nicht hin ohne Beschreibung was "es" ist. Wie soll Dir da jemand helfen?
ich möchte die Zeit mit einer Vorher eingestellten vergleichen und wenn diese überschritten wird soll ein Ausgang geschaltet werden also genau wie bei einer Schaltuhr.
wenn das Projekt fertig ist sollte die Schaltuhr eine ,durch einen Drehgeber, einzustellende Zeit von einer vorgegebenen Zeit abziehen und dann den Ausgang schalten wenn diese errechnete Zeit erreicht wird. ( hoffentlich habe ich mich nicht zu kompliziert ausgedrückt )
Das sollte eine einfach zu bedienende Steuerung für eine Nachtspeicherheizung werden .
Ich möchte das Ganze in Schritten entwickeln ,denn etwas lernen möchte ich ja auch und nicht nur einen vorgefertigten Sketch übertragen.
Darum hoffe ich ,dass wenn es ins stocken gerät ,ich hier immer etwas Hilfe bekomme.
Wieso verwendest Du nicht einfach die Funktion "rtc.getTime()"?
Das liefert ein struct mit allen Einzelwerten. Du hast also Zugriff auf Stunde, Minute, Sekunde usw. und zwar als Zahlen und nicht als String. Damit kannst Du dann locker die aktuelle Zeit mit einer beliebigen anderen vergleichen.