Falls ja: es gibt Neuigkeiten.
Da noch reichlich Platz auf dem Display war, hab ich mal eben schnell eine Anzeige der Mondphasen hinzugefügt.
Die werden sogar grafisch angezeigt- leider kriegts mein Handy einfach nicht hin, die Anzeige gescheit zu fotografieren, aber ich denke, man kanns erkennen. Hab mal versuchsweise Datum und Uhrzeit auf eine andere "Mondphase" eingestellt gehabt, für das eine Bild.
Da erkennt man schön die Sichel- naja, wenn mans auf dem grausligen Bild halt erkennt. Es wird tatsächlich eine "dunkle" Scheibe über den Mond geschoben, und zwar mit einer Genauigkeit von 50 Stufen.
Links daneben steht dann die Tendenz, grade jetzt, wo wir Neumond haben (der wird auf dem anderen Bild ja angezeigt, aber eben grau und nicht weiss wie Vollmond), kann ich so ablesen, ob wir schon wieder zunehmenden haben oder noch abnehmenden.
Da die Grafik-Zeichnerei das Display doch nen bisschen beansprucht, wird die Mondanzeige nur zweimal täglich aktualisiert- ich find, das ist genau genug, genauer kann sie eh nicht anzeigen.
Dann flackert der Bereich mal kurz, aber- wer schaut schon genau um Punkt 12 zur Uhr?
Ganz ehrlich: bin stolz wie Oskar- die ganze Berechnung und auch die grafische Ausgabe sind komplett selber zusammengedichtet.
Und: `s funktioniert trotzdem.... 8)
Tante Edit sagt gerade: die "Fotos" sind grösser als die Anzeige im Original ist- Digitalzoom taugte noch nie- in Wirklichkeit ist alles rattenscharf.
Übrigns: da wäre noch einiger Platz auf dem Display- einer ne Idee was man damit noch veranstalten könnte?
verfolge dein Projekt schon die ganze Zeit mit sehr viel Interesse. Kann nur sagen, Gratulation, sieht super aus, stellst du den fertigen Code auch hierein? Ich bin absoluter Anfänger bin natürlich sehr daran interessiert wie so etwas programmiert wird. Die Darstellung auf den normalen Dispays ist ja bescheiden so ein Grafikdisplay macht schon was her. Ist die Temperaturanzeige denn jetzt vom DS3231 oder hast du einen anderen externen Sensor eingesetzt?
Sinnvoll fände ich natürlich auch eine Temperaturanzeige der Aussentemperatur. Dann könnte man noch abfagen ob es geregnet und wann und wie lange und wieviel es geregnet hat, war es auch windig oder eher ruhig.
Quatsch, war ein Scherz.
Den Code kann ich schon hergeben aber im Moment überlege ich ob ich ihn nicht umbaue.
Zum einen find ichs schöner, wenn das RTC-Modul die Greenwich-Zeit nutzt. Das hat Vorteile wie: man kann mehrere Zeitzonen aktivieren, oder automatische Sommerzeit-Umstellung einbauen- letzteres fänd ich seeeehr sinnvoll.
Dadurch muss natürlich dann erst mal die korrekte Zeit erzeugt werden-aber schwer isses nich.
Die Uhr nutzt jetzt ausschliesslich den, im RTC-Modul enthaltenen Temperatursensor. Der Bursche gefällt mir: er ist recht genau und ziemlich träge. Für eine Raumtemperatur-Anzeige grade richtig.
Zudem steckbrettfreundlich, da er ja mit über den I2C-Bus läuft, braucht der praktisch gar nix extra.
Die Idee, das Ganze zu einer vernünftigen Wetterstation auszubauen hatte ich auch schon, aber das werd ich nicht machen- der meiste Krempel soll ja mal in meinen Seeteufel.
Vielleicht bau ich irgendwann eine, wenn ich mal Zeit, Ruhe und Lust hab..
Die jetztige wird aber noch erweitert. Bestellt ist einer dieser Mini-Joysticks (auch der eigentlich für den Seeteufel), damit kann man dann "Dinge" tun. Beispielsweise nen Wecker stellen, oder die Sprache umstellen oder- fällt mir schon was leidlich sinnvolles ein, denke ich. Das wird wieder eine nette Übung: für den Seeteufel brauche ich später ein vernünftiges Bedienmenü.
Ausserdem will ich versuchen, das Ganze so zu programmieren, dass es unter dem berühmten LCARS-Betriebssystem läuft.
Heisst: optisch an die Bedienterminals der Star-Trek-Reihe angelehnt.
Aber erst mal sehen ob ich das so umgesetzt bekomme, dass es ohne allzu viel Geflackere abgeht.
Vielleicht bastele ich auch (ggf. dann über das Menü umstellbar) mal eine virtuelle Zeiger-Uhr fürs Display, mal sehen.
Zudem hätte ich gern für die Grossschrift eine andere Schriftart- in der Bibliothek wird nur die Minischrift einfach hochskaliert- so siehts auch aus..
Ein paar Bugs hab ich auch gefunden inzwischen und behoben (es macht wirklich Sinn, das Teil mal mehrere Tage am Stück laufen zu haben): die Sonntage wurden nicht rot- aber die Montage (reiner Schusselfehler), einige Anzeigeteile funktionierten nicht ordentlich- teilweise waren sie irgendwann um ne Stelle verschoben und ähnliches.
Auch das ein Grund, die gesamte Ausgabe noch mal neu zu machen- weniger chaotisch.
Ansonsten aber läuft sie bestens und wirklich genau.
Ich habe zwei Ds1307 sind beide Mist gehen bis zu 10 Sekunden am Tag vor. Dann habe ich mir auch eine DS3231 geholt die läuft jetzt seit 16Tagen und hat eine Abweichung von gerade mal einer Sekunde. Du hast recht Recht auch bei mir ist die Temperatur ziemlich genau. Ich wollte erst die Uhrzeit über DCF77 für eine andere Anwendung realisieren, aber man ist zu sehr Standort (Standort Arduino) gebunden, da hat das Modul deutlich Vorteile. So ein TFT Display habe ich mir auch bestellt, macht viel mehr her wie eine normales LCD.
Das ist doch ganz normal das so eine Sache wie du sie programmiert hast etwas Nacharbeit benötigt. Ich hätte schon Interesse an deinen Code, selbst wenn er nach deiner Ansicht noch nicht ganz fehlerfrei ist, da ich Einsteiger in Sachen Arduino bin ist die Korrektur bzw. Anpassung dann auch für mich eine Herausforderung. Ich habe hier auch einen DHT11 und LM335 liegen könnte mir so eine Außentemperatur darein basteln.
Hallo Heinz.
Ich muss den Code als Datei anhängen-er ist sonst zu lang.
Wenn du ihn benutzt: da ist noch einiges an Nacharbeit nötig.
Die Triggerung der Mondphasen-Anzeige beispielsweise ist im Moment ausgesprochener Pfusch. So, wie die im Text steht, kann sie mehr oder weniger zufällig mehrmals aufgerufen werden.
Das sollte ähnlich gelöst werden, wie die Aktualisierung der anderen Anzeigen.
Eventuell sollte das Mond-Schatten-Pseudosprite etwas helleres Grau werden, wenn man etwas seitlich aufs Display blickt, sieht es "matt" aus- die Farbe hab ich nach dem Tutorial von Adafruit zur GFX-Lib. berechnet.
Die definierten Pins sind die, die für den MEGA 2560 empfohlen werden, also für die Hardware-SPI. Ich würde dir empfehlen, die zu nutzen, per Software wird es zwar auch laufen, aber deutlich langsamer.
danke für den Code leider läuft er nicht, wenn ich darin herumkorrigiere bekomme ich eine Fehlermeldung nach der anderen, eventuell müßtes du da noch mal selber Hand anlegen.
Jepp-den Fehler hatte ich auch, da hat wohl Windows während dem Tippen mal schnell die Anwendung gewechselt gehabt..
Das Wörtchen"bist" muss da raus-hier die korrigierte Version.
Ja das hatte ich schon gesehen und korrigiert, nur ich bekomme Fehlermeldung Robot.ccp und Robot_Control, das die Variable
LCD_CS und DC_LCD nicht richtig deklariert sind, das bekomme ich nicht weg.
Habe das unter der IDE 1.05 laufen oder ist das falsch?
Nein-den hatte ich auch. Da ich aber die Robot-Library nicht brauche hab ich das Problerm umschifft, indem ich die kurzerhand entfernt (gelöscht..) habe.
Funktioniert auch ohne sie und ich wüsste nicht, wieso sie das nicht sollte.
Leider bin ich, was die ganzen Bibliotheken angeht, auch nicht so fit, um das Problem eleganter lösen zu können.
Rabenauge:
Da ich aber die Robot-Library nicht brauche hab ich das Problerm umschifft, indem ich die kurzerhand entfernt (gelöscht..) habe.
Funktioniert auch ohne sie und ich wüsste nicht, wieso sie das nicht sollte.
Leider bin ich, was die ganzen Bibliotheken angeht, auch nicht so fit, um das Problem eleganter lösen zu können.
Interessanter Ansatz
Ich dachte immer, viel hilft viel
Bin, was das Coden angeht, blutiger Anfänger...
Ich hab's mehr mit Hardware 8)
läuft......
Ich hoffe ich bekomme morgen oder übermorgen mein TFT werde mich dann sofort daran setzen und alles anschließen. Bin richtig gespannt auf die Anzeige.
Gruß Heinz g
@Gerald: ich vermute, dass die IDE so "clever" ist und sämtliche möglichen Zusammenhänge überprüft.
Das ist einerseits natürlich toll-aber andererseits dauert dann das Compilieren umso länger und andererseits gibts eben öfter solche Fehler- die praktisch gar nicht vorhanden sind (wenn dazu jemand etwas Besseres weiss-heraus mit der Sprache). Im Programm wird die Roboter-Lib absolut nicht gebraucht, also... 8)
Eben hab ich übrigens mal die Mondanzeige erledigt: nun wird die Routine "Mondphase berechnen" zyklisch mit im Hauptprogramm aufgerufen, aber nur, wenn sich der Wert der Mondphase nennenswert ändert, die Anzeige aktualisiert.
Somit dürfte sie auch in etwa 2x täglich neu geschrieben werden (die darstellbaren Mondphasen haben ja nen Wertebereich von 0 bis 50 und ein Mondmonat rund 29 Tage). Ist zum einen genauer und zum anderen wesentlich sauberer gelöst aus das Gepfusche vorher.
Was übrigens bei mir überhaupt nicht funktioniert (das heisst, es gibt sehr komische Resultate): die Fehlerbehandlung "wenn RTC nicht richtig arbeitet" im Setup-Teil. Normalerweise sollten dann Datum und Uhrzeit der Compilierung geschrieben werden, aber das gibt was vollkommen verrücktes..vielleicht lösen wir das mal gemeinsam?
Jemand hier, der sich damit auskennt?
Sodele-Chef meinte ich darf früher heim (und morgen auch gleich freimachen) also:
Uhr hochgefahren (die läuft bei mir die meiste Zeit über Netzteil), und gewundert: och, da ist am Datum was verschoben- naja, hab auch das geändert. Jetzt wird die Anzeige des Jahres dynamisch platziert- schön brav, eine Stelle nach dem Monatsnamen.
Besser so- dafür muss sie (da sich die Länge des Monatsnamens ja ändert..) jeden Monat neu geschrieben werden- grade noch vertretbar.
Gestern hab ich endlich noch ein Tool gefunden, mit dem ich mir die Hexcodes der möglichen Displayfarben (die Adafruit-Lib unterstützt ja nur 16bit und ich finds ausreichend) direkt aus dem Farbkreis picken kann. Das erspart mühselige Rechnereien.
Somit steht weiteren Farben nix mehr im Wege und ich hab...da mal was angehängt.
Wie findet ihr das Design?
Ich benutze die RTClib.h-Bibliothek und im Beispielprogramm wird, für den Fall, dass die RTc nicht funktioniert, diese Zeile:
rtc.adjust(DateTime(DATE, TIME));
benutzt. Sie soll die Uhr auf die "Systemzeit" stellen- also die Zeit, zu der der Sketch compiliert wird.
Aber: sie gibt sehr unsinnige Zeiten aus.
Weiss jemand, wo das Problem liegt?
Nebenbei angefallen: noch ein kleiner Bug in der Anzeige: die Uhr liefert, wenn sie länger aus war, zuerst einen falschen Wert vom Temperatursensor- offenbar braucht der ne Weile, um munter zu werden. Dabei konnte der "Grad"-Schriftzug verrutschen und am Ende konnte dann "Gradd" draus werden.
Auch behoben...
Bevor ich mich erst wieder betteln lasse- der aktuell laufende Code:
Hm. Richtig was los hier...nein-ich verrate nicht, was der zuletzt gepostete Sketch treibt, probiert ihn aus.
Aber es geht weiter: da mein Mini-Joystick noch immer nicht da ist, und ich eh mal ne gescheite Eingabemöglichkeit benötige, hab ich mir ein 3-Tasten-Buttonfeld selber geschweisst.
Mit richtigen Buttons-nicht den Murks aus dem Starterset. 8)
Hab gleich ein kleines Platinchen draus gemacht, fünf Widerstände hinzugefügt und- das Ganze braucht lediglich einen Analogport.
Eben getestet: die Buttons werden sauber erkannt: Oben 1, Mitte 2, Unten 3- und wenn man will kann man aus 1&&3 auch noch 2 machen.
Somit ergeben sich Welten an neuen Möglichkeiten, beispielsweise könnte man nen Wecker einbauen, der mittels der Knöpfe bequem gestellt werden kann, mehrere Zeitzonen ins Spiel bringen und vieles mehr.
Mal sehn, was mir so einfällt.
Falls es doch irgendwen interessiert: die Version "Superuhr" braucht die Buttons noch immer überhaupt nicht- an der mache ich derzeit nix.
Die andere Version ist bis hierhin auch buttonfrei, aber ich hab das Gefühl, das ändert sich-vielleicht bei der nächsten Version. Also: Buttonfeld basteln, ist kein Hexenwerk. Das ist in weniger als ner halben Stunde gemacht.
Hallo Sly,
ich hätte dir gerne von meiner Seite eine Erfolgsmeldung geschickt, nur leider ist das mir zum Wochenende zugesagte TFT nicht eingetroffen. Sobald das hier eintrifft bekommst eine Meldung von mir.
Aber du hast Recht mich wundert es auch das du so wenig Resonanz auf dein für mich tolles Projekt bekommst zumal doch auch viele hier im Forum irgendetwas mit Uhrzeiten und Temperatur programmieren und dazu ist eigentlich eine Aneige unerlässlich.
Gruß Heinz
Hm, nötig-nicht zwingend.
Die besten Controller sind noch immer die, von denen man gar nix merkt.
Was der intern treibt muss man nicht zwingend wissen.
Ich hatte auch nie vor, mir so eine Uhr zu bauen- die kam nur zustande, weil das RTC-Modul so spottbillig war- ansonsten kaufe ich ja Komponenten, die später in den Seeteufel sollen.
Andererseits bin ich schon ziemlich sicher, dass der Mega hier nicht mein einziger Arduino bleiben wird. Und wenn ich mir die neue Uhr so ansehe...will gar nicht mehr recht ohne sie, sollte nen Gehäuse bekommen.
Selbst die alte Version ist inzwischen seit Tagen nicht mehr auf dem Board gelaufen, obwohl sie (noch) deutlich mehr drauf hat als die neue...naja-das wird sich noch ändern.
Was dein Display angeht: hast du auch das von Sainsmart, was aus Holland geliefert wird?
Meins hat für das Stück hierher volle zwei Wochen gebraucht- wahrscheinlich geben die das irgendwelchen Reisebussen mit-ist ja portofrei.
Mit dem nächsten Bus wird dann vermutlich mein Joystick auch eintreffen...