Hallo liebe Community, ich arbeite aktuell an einem Fernsehturm Projekt in unserer Firma. Der Fernsehturm soll die aktuelle Uhrzeit mit den LEDs anzeigen. Dies funktioniert auch soweit ohne Probleme. Das Problem ist jetzt aber nur, wir nutzen aktuell noch keinen Funkchip im Fernsehturm, bedeutet also man muss die Uhrzeit selber vorher richtig einstellen. Aktuell müsste man den Turm um genau 23:59 einschalten, damit er die richtige Uhrzeit ausgibt. Könnte mir vielleicht jemand aus dem folgenden Quelltext sagen, was ich genau verändern muss um dies z.B. um 12 Uhr Mittags passieren zu lassen, oder wie ich selber genau die Uhrzeit bestimmen kann? #define A0 14 //ANALOG 0 #define A1 15 #define A2 16 #define INTERVAL 1000 //PINS SEKUNDEN MINUTEN STUNDEN byte oneSecond[] = {0,1,2,3,4,5,6,7,8}; //No Serial on 0/1 byte tenSecond[] = {9,10,11,12,13}; // byte theSwitch[] = {14,15,16}; //SEKUNDE MINUTE STUNDE int s10=0,s1=0; //ONESECOND TENSECOND BAND int m10=5,m1=9; // Start mit 23:59:00 Uhr int h10=2,h1=3; unsigned long t,t0; //TIMEINIT void INTITIME(void){t0=millis();} unsigned long TIMEREAD(void){return millis()-t0;} void setup() {int i; for(i=0; i<sizeof(oneSecond);i++)pinMode(oneSecond[i],OUTPUT); for(i=0; i<sizeof(tenSecond);i++)pinMode(tenSecond[i],OUTPUT); for(i=0; i<sizeof(theSwitch);i++)pinMode(theSwitch[i],OUTPUT); digitalWrite(A0, HIGH); digitalWrite(A1, HIGH); digitalWrite(A2, HIGH); } void loop() {int i; t=TIMEREAD(); do {for(i=0;i<sizeof(oneSecond);i++)digitalWrite(oneSecond[i],s1<=i?LOW:HIG H); //EINERBAND SEKUNDEN for(i=0;i<sizeof(tenSecond);i++)digitalWrite(tenSecond[i],s10<=i?LOW:HIG H); //ZEHNERBAND SEKUNDEN digitalWrite(A0, LOW);//Masse an Sekunden delay(1); //SHOWTIME SEKUNDEN digitalWrite(A0, HIGH); for(i=0;i<sizeof(oneSecond);i++)digitalWrite(oneSecond[i],m1<=i?LOW:HIGH ); //EINERBAND MINUTEN for(i=0;i<sizeof(tenSecond);i++)digitalWrite(tenSecond[i],m10<=i?LOW:HIG H); //ZEHNERBAND MINUTEN digitalWrite(A1, LOW);//Masse an MINUTEN delay(1); //SHOWTIME MINUTEN digitalWrite(A1, HIGH); for(i=0;i<sizeof(oneSecond);i++)digitalWrite(oneSecond[i],h1<=i?LOW:HIGH ); //EINERBAND STUNDEN for(i=0;i<sizeof(tenSecond);i++)digitalWrite(tenSecond[i],h10<=i?LOW:HIG H); //ZEHNERBAND STUNDEN digitalWrite(A2, LOW);//Masse an STUNDEN delay(1); //SHOWTIME STUNDEN digitalWrite(A2, HIGH); }while(TIMEREAD()<(t+INTERVAL)); //--------------------------------- s1++; //s++; if(s1>=10){s1=0;s10++;} if(s10>=6){s10=0;m1++;} //m1++; if(m1>=10){m1=0;m10++;} if(m10>=6){m10=0;h1++;} //h1++; if(h1>=10){h1=0;h10++;} if(h10>=2 && h1>=4){h10=0;h1=0;} } } Vielen lieben dank, ich komme an dieser Stelle nämlich nicht weiter. Mit freundlichen Grüßen Sven Wesoly
So schwer ist das doch nicht:
1 | int s10=0,s1=0; //ONESECOND TENSECOND BAND |
2 | int m10=5,m1=9; // Start mit 23:59:00 Uhr |
3 | int h10=2,h1=3; |
int h10=1, h1=2; int m10=0, m1=0;
Sven W. schrieb: > Aktuell müsste man den Turm um genau 23:59 einschalten, damit er die > richtige Uhrzeit ausgibt. Errinert mich an mein Uhr was ich vor dem Flashen im Source Code kurz nachziehen musste damit der RTC Baustein richtig bedatet wurde. Dann schnell kompilieren und flashen :) Ist dein Uhr wirklich pünktlich? Kann es sein dass es über längere Zeit sich verdriftet? Es wird ja nicht durch Interrupt sondern durch Pollen getrieben. Daher beim update vergeht dT Zeit was nicht abgerechnet wird. Also sprich ide 1000 ms wartezeit wird ja 1000ms + dT. Reden wir hier wirklich von einer Uhr der von vielen Menschen gesehen wird? Oder nur ein Bastelprojekt? Meiner Meinung nach fehlen da grundsätzliche Funktionen und die Technische Lösung ist auch nicht State of the Art. - Displayantreiben würde ich ohne Delay machen. Lieber StateMachine nehmen. - 1 Sekunde würde ich von einer Quarz (32kHz als Second Osci) ableiten und daraus einen Interrupt machen. - Optional: Quarz abgleichen, damit der Frequenz wirklich stimmt. - Paar Tasten spendieren für einstellen. Plus Funktionalität dazu. - Reset oder POR Behandlung unbedingt machen damit keine falsche Uhrzeit angezeigt wird. - Optional: RTC Baustein verbauen. Plus Funktionalität dazu. - Optional: RTC Baustein Clock abgleichen. - GPS oder DCF Empfänger optional um nicht immer korrigieren zu müssen
Optional: IR Fernbedienung zum jederzeitigen Stellen der Uhr. Benötigt nur eine winzige Bohrung für den IR Empfänger und ein wenig IRMP.
kyrk.5 schrieb: > Reden wir hier wirklich von einer Uhr der von vielen Menschen gesehen > wird? Ich bin mir sicher es ist nur ein kleines Projekt. Die Uhr auf einem Fernsehturm läuft garantiert nicht auf einem Arduino und erst recht nicht ohne Zeitserver ;)
HildeK schrieb: > So schwer ist das doch nicht: >
1 | > int s10=0,s1=0; //ONESECOND TENSECOND BAND |
2 | > int m10=5,m1=9; // Start mit 23:59:00 Uhr |
3 | > int h10=2,h1=3; |
4 | >
|
> int h10=1, h1=2; > int m10=0, m1=0; Ok super dankeschön, war mir die ganze Zeit mit dem Zeitstellen nicht sicher, aber glaube so langsam das ich das jetzt auch verstanden habe.
kyrk.5 schrieb: > Ist dein Uhr wirklich pünktlich? Kann es sein dass es über längere Zeit > sich verdriftet? Es wird ja nicht durch Interrupt sondern durch Pollen > getrieben. Daher beim update vergeht dT Zeit was nicht abgerechnet wird. > Also sprich ide 1000 ms wartezeit wird ja 1000ms + dT. > > Reden wir hier wirklich von einer Uhr der von vielen Menschen gesehen > wird? Oder nur ein Bastelprojekt? Meiner Meinung nach fehlen da > grundsätzliche Funktionen und die Technische Lösung ist auch nicht State > of the Art. Habe das bis jetzt noch nicht beobachtet, aber denkbar wäre es, das die Uhr auf dauer anfängt abzuweichen. Wir haben noch einen DCF Empfänger aber der ist noch nicht verbaut und ich wüsste ehrlich gesagt dann auch gar nicht wie ich den einzubinden habe ^^ Bis jetzt ist es erstmal nur ein Testprojekt, wenn bei dem Turm alles klappt, kann es sein das dieser dann später ausgestellt wird.
RTC schrieb: > kyrk.5 schrieb: >> Reden wir hier wirklich von einer Uhr der von vielen Menschen gesehen >> wird? > > Ich bin mir sicher es ist nur ein kleines Projekt. Die Uhr auf einem > Fernsehturm läuft garantiert nicht auf einem Arduino und erst recht > nicht ohne Zeitserver ;) Ja genau ist erstmal ein kleines Projekt. Meine Idee war auch schon, den Arduino plus RTC mit einem Funkchip zu bestücken, das der Fernsehturm sich dann über Funk Synchronisiert, nur dafür sind meine Programmierkenntnisse zu weit eingerostet, als das ich diesen so einfach einbinden könnte.
kyrk.5 schrieb: > - Reset oder POR Behandlung unbedingt machen damit keine falsche Uhrzeit > angezeigt wird. > - Optional: RTC Baustein verbauen. Plus Funktionalität dazu. > - Optional: RTC Baustein Clock abgleichen. > - GPS oder DCF Empfänger optional um nicht immer korrigieren zu müssen Wie müsste ich denn da genau den RTC einbinden? Da der mit eingebaut wurde. Wüsste weder beim RTC Baustein noch beim DCF Empfänger, wie ich diesen einzubinden hätte. Soweit möchte ich mich bis jetzt auch schon mal für die Antworten von euch allen bedanken :D
Ich würde wenigstens zwei Taster hinzufügen, mit denen man die Stunden und Minuten "hochdrücken" kann.
Stefan ⛄ F. schrieb: > Ich würde wenigstens zwei Taster hinzufügen, mit denen man die Stunden > und Minuten "hochdrücken" kann. Das müsste ich morgen auf der Arbeit erstmal kontrollieren, ob wir denn noch Taster zur verfügung haben. Kann das jetzt so aus dem stehgreif gar nicht sagen.
Sven W. schrieb: > Das müsste ich morgen auf der Arbeit erstmal kontrollieren, ob wir denn > noch Taster zur verfügung haben. Wenn nicht, gib mir per PN Bescheid. Ich sponsore die ansonsten. MfG von der Spree Frank
:
Bearbeitet durch User
So also, ich habe vorhin den RTC und den DCF Chip an den Arduino angeschlossen, in welcher Form müsste ich nun das Programm anpassen, damit diese beiden Bausteine richtig verwendet werden und das die Uhr sich dementsprechend richtig stellt? Wer kann mir da weiterhelfen?
Sven W. schrieb: > Wer kann mir da weiterhelfen? Wer hat Dir denn das bisherige Programm geschrieben? Du brauchst jemanden, der programmieren kann.
Sven W. schrieb: > Wie müsste ich denn da genau den RTC einbinden? Da der mit eingebaut > wurde. Je nach dem, was der für Anschlüsse hat. Ein preiswertes Modul ist vielfach zu bekommen für wenige € mit dem DS3231. Das wird über einen I2C-Anschluss eingebunden und soll laut Spezifikation < 1min Ablage pro Jahr haben. Allerdings bleibt das Problem, dass du dessen Uhr stellen musst und es macht auch keine Sommer-/Winterzeitumstellung. Und das geht wiederum nur über Tasten oder einen Funkempfänger. Für die I2C-Anbindung gibt es im Netz Beispiele, z.B. von Peter Fleury. > Wüsste weder beim RTC Baustein noch beim DCF Empfänger, wie ich diesen > einzubinden hätte. Im Verhältnis zu deinem Ansatz und für deine 'eingerosteten Programmierkenntnisse' sind beide Varianten anspruchsvoll. Aber auch für DCF-Dekoder bzw. Uhren, die mit DCF laufen gibt es genügend SW-Lösungen auch hier im Forum. So hat z.B. Peter Dannegger hier Beitrag "DCF77 Uhr in C mit ATtiny26" eine Lösung in C veröffentlicht. Aber auch andere haben ihren Code zur Verfügung gestellt.
HildeK schrieb: > Je nach dem, was der für Anschlüsse hat. Ein preiswertes Modul ist > vielfach zu bekommen für wenige € mit dem DS3231. Das wird über einen > I2C-Anschluss eingebunden und soll laut Spezifikation < 1min Ablage pro > Jahr haben. Allerdings bleibt das Problem, dass du dessen Uhr stellen > musst und es macht auch keine Sommer-/Winterzeitumstellung. Und das geht > wiederum nur über Tasten oder einen Funkempfänger. Für die I2C-Anbindung > gibt es im Netz Beispiele, z.B. von Peter Fleury. > >> Wüsste weder beim RTC Baustein noch beim DCF Empfänger, wie ich diesen >> einzubinden hätte. > > Im Verhältnis zu deinem Ansatz und für deine 'eingerosteten > Programmierkenntnisse' sind beide Varianten anspruchsvoll. Aber auch für > DCF-Dekoder bzw. Uhren, die mit DCF laufen gibt es genügend SW-Lösungen > auch hier im Forum. So hat z.B. Peter Dannegger hier > Beitrag "DCF77 Uhr in C mit ATtiny26" eine Lösung in C > veröffentlicht. Aber auch andere haben ihren Code zur Verfügung > gestellt. Dankeschön, genau der DS3231 ist verbaut. Dann suche ich mal noch etwas durchs Forum durch und gucke was ich da so finde. Werde dann auch mal gucken, das ich das Programm heute Mittag mal aufspiele um zu gucken wie es läuft. Vielen dank für die schnelle Antwort. Echt cool das hier so eine aktive Community ist. :D
Peter D. schrieb: > Wer hat Dir denn das bisherige Programm geschrieben? http://www.hjberndt.de/soft/rtc.html
Am besten finde ich das die Lösung der Schaltung ohne Widerstände auskommt. Da könnte sich so manches Arduino-Projekt mal was abkucken, den teuren nutzlosen Kram zu verbasteln. Echtjetz.
HildeK schrieb: > http://www.hjberndt.de/soft/rtc.html "Das Programm entspricht den obigen Ausführungen und ist nicht platzoptimiert (Lesbarkeit)." Der Kommentar ist lustig, unlesbarer geht nun wirklich nicht. Der Autor hat eine riesen Angst vor Leerzeichen und Zeilenvorschüben. Er sollte dringend mal Quelltextbeispiele aus Programmierbüchern anschauen. Anbei mal durch Astyle gejagt.
"Aufgrund von Arduinos Strombegrenzung und der Zeitsteuerung wird auf Vorwiderstände verzichtet." Ich wüsste gerne mal, in was für einem Traum der Autor von dieser Strombegrenzung gehört hat. Um 23:59:59 (und andere Zeiten wo viele LED's leuchten) fließt da mit Sicherheit mehr Strom, als erlaubt.
HildeK schrieb: > Aber auch andere haben ihren Code zur Verfügung > gestellt. Beitrag "MSF60 Dekoder AVR Teil_2" Hi, also, zunächst denke ich, man braucht kein von Grund auf neues Uhrenprogramm, sondern man lässt eines der zahlreichen DCF77-Decoderprogramme auf "Quarz-Gangreserve" laufen und man nimmt statt der in den Programmen verwendeten Binär-zu-7-Segment-Tabellen oder LCD-Subroutinen einfach eine Routine oder Tabelle, die die Einzellampen am Turm repräsentiert. Ganz so einfach scheint es aber dann nicht zu sein, denn es sollen ja noch Trennleuchten eingefügt werden. Am besten ist es, erst einmal eine Excel-Tabelle oder sowas zu machen, um zu gucken, was wann leuchten soll oder nicht. ciao gustav
:
Bearbeitet durch User
Da du offenbar Arduino verwendest (wegen void setup und loop), schaltest du deine Uhr ein und sendest die aktuelle Uhrzeit vom Laptop (Serial.read();).
Karl B. schrieb: > eines der zahlreichen > DCF77-Decoderprogramme auf ATMega32-er Basis. Update im Anhang: viel Spaß ciao gustav
Peter D. schrieb: > HildeK schrieb: >> http://www.hjberndt.de/soft/rtc.html > > "Das Programm entspricht den obigen Ausführungen und ist nicht > platzoptimiert (Lesbarkeit)." > > Anbei mal durch Astyle gejagt. Ich werde es gleich mal aufspielen und testen, Dankeschön :D
Karl B. schrieb: > Karl B. schrieb: >> eines der zahlreichen >> DCF77-Decoderprogramme auf ATMega32-er Basis. > > Update im Anhang: > > viel Spaß > ciao > gustav Müsste ich denn jetzt noch was an dem Programm noch anpassen oder kann ich es so direkt testen?
Sven W. schrieb: > Ich werde es gleich mal aufspielen und testen, Dankeschön :D Es wird sich exakt so verhalten wie dein oben angegebenes. peda hat es nur neu formatieren lassen, d.h. die Lesbarkeit für den Menschen wesentlich verbessert. Und es ist immer noch die Startzeit 23:59 drin ?.
Sven W. schrieb: > Müsste ich denn jetzt noch was an dem Programm noch anpassen oder kann > ich es so direkt testen? Hi, Es ging nur darum, wie prinzipiell ein DCF77-Decoder aufgebaut sein kann und wie eine Uhr weiterzählt, auch ohne DCF77. Übrigens: Copyright @Scott-Falk Huehn https://s-huehn.de/elektronik/wohnuhr/wohnuhr.htm Die Ausgaberoutinen müssten natürlich auf die Turmuhrlampenabfolge angepasst werden. ciao gustav
Karl B. schrieb: > Sven W. schrieb: >> Müsste ich denn jetzt noch was an dem Programm noch anpassen oder kann >> ich es so direkt testen? > > Hi, > Es ging nur darum, wie prinzipiell ein DCF77-Decoder aufgebaut sein kann > und wie eine Uhr weiterzählt, auch ohne DCF77. > Übrigens: Copyright @Scott-Falk Huehn > https://s-huehn.de/elektronik/wohnuhr/wohnuhr.htm > Die Ausgaberoutinen müssten natürlich auf die Turmuhrlampenabfolge > angepasst werden. > > ciao > gustav Ich versuch es jetzt mal anzupassen, war im Urlaub deswegen war ich nicht mehr aktiv in dem Beitrag.
Karl B. schrieb: > Hi, > Es ging nur darum, wie prinzipiell ein DCF77-Decoder aufgebaut sein kann > und wie eine Uhr weiterzählt, auch ohne DCF77. > Übrigens: Copyright @Scott-Falk Huehn > https://s-huehn.de/elektronik/wohnuhr/wohnuhr.htm > Die Ausgaberoutinen müssten natürlich auf die Turmuhrlampenabfolge > angepasst werden. > > ciao > gustav Also ich habe jetzt mal durch das Programm durch geguckt, aber das ist so komplex, das ich nicht mal weiß wo ich da die Anpassungen für die LEDs machen muss. Du kannst mir da nicht zufällig etwas unter die Arme greifen oder? Also das etwas erklären oder dergleichen? Liebe Grüße Sven
Sven W. schrieb: > Wie müsste ich denn da genau den RTC einbinden? Da der mit eingebaut > wurde. > > Wüsste weder beim RTC Baustein noch beim DCF Empfänger, wie ich diesen > einzubinden hätte. Versuchs mal mit programmieren....
Sven W. schrieb: > Also ich habe jetzt mal durch das Programm durch geguckt, aber das ist > so komplex, das ich nicht mal weiß wo ich da die Anpassungen für die > LEDs machen muss. Du kannst mir da nicht zufällig etwas unter die Arme > greifen oder? Nachdem du im Eröffnungspost die beiden Werte für die 23:56 nicht in der vorhandenen SW gefunden hast, schließe ich daraus, dass du nicht programmieren kannst. Und dann werden ein paar Tipps zur Anpassung erst recht ein Problem für dich. Das beginnt schon mit der Anpassung, wenn die diversen Softwaren für verschiedene Prozessoren geschrieben wurden.
HildeK schrieb: > schließe ich daraus, ...dass ein fertiges DCF-Modul von Conrad die schnelle Lösung wäre? EUROTIME 51900 Funk Uhrwerk mit Anzeige 14,61 € ? EAN: 4016138641875
oszi40 schrieb: > HildeK schrieb: >> schließe ich daraus, > > ...dass ein fertiges DCF-Modul von Conrad die schnelle Lösung wäre? Naja, sein Ziel war doch die Rheinturmuhr ...
HildeK schrieb: > Nachdem du im Eröffnungspost die beiden Werte für die 23:56 nicht in der > vorhandenen SW gefunden hast, schließe ich daraus, dass du nicht > programmieren kannst. Und dann werden ein paar Tipps zur Anpassung erst > recht ein Problem für dich. Das beginnt schon mit der Anpassung, wenn > die diversen Softwaren für verschiedene Prozessoren geschrieben wurden. Es ist einfach Ewigkeiten her, das ich in C Programmiert habe. Ich hab die Zeit und auch das Program, welches ich mit an den Post hier angehangen habe, verstanden. Dauert alles nur etwas, da ich echt eingerostet in dem Thema bin. Ich gucke jetzt noch mal was nach und dann melde ich mich dazu noch mal.
Sven W. schrieb: > Es ist einfach Ewigkeiten her, das ich in C Programmiert habe. Ich hab > die Zeit und auch das Program, welches ich mit an den Post hier > angehangen habe, verstanden. Wo ist dann das Problem? Warum dann überhaupt dieser Thread? Du hast also alle Voraussetzungen um dein Problem zu lösen. > Dauert alles nur etwas, da ich echt eingerostet in dem Thema bin. Ist ja wohl Arbeitszeit, also sollte das kein Problem sein.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.