Forum: Projekte & Code Minutengenaue 24 Stunden-Wortuhr - wer will mitbauen?


von Hans H. (loetkolben)


Lesenswert?

Noch ein Tip da ich erst selber nach ner Weile drauf gekommen bin:

Um die tables.h und display.h vom GitHub abspeichern, einfach 
Rechtsclick auf den "Raw" Button , dann Speichern unter auswählen und 
Verzeichnis wählen -> schon ist es gespeichert ;-)

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

Hans H. schrieb:
> Mein großer Wunsch wäre daß du die Bezeichner der Word-Positionen
> korrigierst, daß diese mit den wirklichen Indizes übereinstimmen:
>
> Index Name
> 1     WP_1_ES  -> ok
> 2     WP_2_IST  -> ok
> 4     WP_3_VIERTEL -> ok
> 5     WP_6_EIN  -> falsch
> 6     WP_7_EINS  -> falsch
>
> usw.

Ich ändere da selbstverständlich gerne was, aber sorry, im Augenblick 
kapier' ich das nicht ganz.

Wenn ich im Bezeichner den "wirklichen Index" (also die Startposition in 
der Queue) verwende, dann müsste das doch folgendermaßen lauten:

Index  Name

Zeile 2 (Indizes auf den Wortanfang zeigend):

 1     WP_1_ES      -> Startposition 1
 2     WP_4_IST     -> Startposition 4
 3     WP_8_VIERTEL -> Startposition 8 (statt 3!)
 5     WP_15_EIN    -> Startposition 15
 6     WP_15_EINS   -> Startposition 15
 7     WP_16_IN     -> Startposition 16

Zeile 2 (Indizes auf das Wortende zeigend):

 8     WP_33_DREI   -> Startposition 33
 9     WP_32_EIN    -> Startposition 32
10     WP_31_EINE   -> Startposition 31
11     WP_30_EINER  -> Startposition 30
12     WP_24_SECH   -> Startposition 24
13     WP_25_SECHS  -> Startposition 25
14     WP_22_SIEB   -> Startposition 22
15     WP_20_SIEBEN -> Startposition 20

Ich steh' kräftig auf der Leitung, bitte hilf mir herunter!

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Ich ändere da selbstverständlich gerne was, aber sorry, im Augenblick
> kapier' ich das nicht ganz.

Das können wir auch einfacher haben:

Die Zahlen sind nur DB-Keys, das könnten ja auch UUIDs sein. Die DB-Keys 
in der [text]-Spalte sorgen für Verwirrung (da Lücken drin sind) und 
machen da m.E. auch keinen Sinn.

Früher waren das z.B. DREI*, DREI**, DREI*** usw.

In der DB reicht DREI_1, DREI_2, DREI_3 usw. in der [text]-Spalte, die 
Index-Nummer kann der Code-Generator davor setzen, wenn die gewollt ist.

Hans H. schrieb:
> Ansonsten ist die aktuelle Version von dir einwandfrei compilierbar.

Cool, dann können wir das ja auch so lange so lassen, bis der nächste 
echte Fehler in der .accdb gefunden wird und erst dann ein .accdb-Update 
machen.

PS:

Herbert P. schrieb:
> Solltest Du mit "Hermann" mich gemeint haben:

Das erinnert mich an meinen Nachbarn Helmut, den ich schon zweimal 
Hermann genannt habe. Der war schon ziemlich sauer. Sorry.

VG Torsten C. ➜ Für Neu-Eisteiger gibt es den
Beitrag "WortUhr/WordClock: Minutengenau, 24h, RGB – Für Neu-Einsteiger"

: Bearbeitet durch User
von Hans H. (loetkolben)


Lesenswert?

@Herbert
Ich dachte Du hast die Zahl vorangestellt um z.B. in tbl_hours gleich zu 
wissen was hour_idx0..hour_idx6 bedeutet.
D.h. dort steht eine 17 -> 17_ELF ohne Nachschauen.
Alles andere ist auch nicht sinnvoll.
Aber es gibt durch die Lücken halt eine falsche Zuordnung Name -> 
Position innerhalb der WordPos-Enumeration.
Im C-Code hat z.B. WP_17_ELF den numerischen Wert 15.

Oder wie Torsten schon schrieb, in der Datenbank am besten statt 1_ES 
usw. wieder die Worte ohne vorangestellte Zahl nehmen. Bei 
Mehrfachauftreten wieder hinten hochzählen, aber nicht mit * sondern 
123.
Dann müsstest Du aber auch bei hour_idx und minute_idx mit den Namen 
arbeiten, wenn das geht?


@Torsten: die WP_ Konstanten können ja dann auch mit 0 anfangen, dann 
brauchen wir WP_DUMMY nicht mehr.

Bei der Ausgabe von tbl_hours und tbl_minutes dann entsprechend 
korrigieren.

von Hans H. (loetkolben)


Lesenswert?

@Herbert:
Mit Index meine ich den numerischen Wert, den die WordPos-Enums vom 
C-Compiler bekommen wenn sie der Reihe nach definiert werden, du meinst 
da sicher was anderes.

im C-Code steht:
1
enum WordPos {
2
    WP_DUMMY,                                             // to have enum int value same as herberts index
3
    WP_1_ES,                                              // ES
4
    WP_2_IST,                                             // IST
5
    WP_3_VIERTEL,                                         // VIERTEL
6
    WP_6_EIN,                                             // EIN
7
    WP_7_EINS,  
8
...
9
};

Damit hat das enum WP_1_ES den numerischen Wert 1, und wenn der Name mit 
dem numerischen Wert übereinstimmt ist das sehr hilfreich.

Ich hoffe alle Klarheiten beseitigt zu haben ;-)

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Hans H. schrieb:
> die WP_ Konstanten können ja dann auch mit 0 anfangen, dann
> brauchen wir WP_DUMMY nicht mehr.
>
> Bei der Ausgabe von tbl_hours und tbl_minutes dann entsprechend
> korrigieren.

Scheibenkleister. Jetzt verstehe ich das Problem erst.

Ich hätte generieren müssen:
1
enum WordPos {
2
  WP_DUMMY, // to have enum int value same as herberts index
3
  WP_1_ES, // ES
4
  WP_2_IST, // IST
5
  WP_3_VIERTEL, // VIERTEL
6
  WP_6_EIN = 4, // EIN
7
  WP_7_EINS = 5, // EINS
8
  WP_8_IN = 6, // IN 
9
  ...

Ich muss jetzt Rommé spielen, aber ich versuche das nebenbei zu 
korrigieren.

Der Groschen viel pfennigweise.

: Bearbeitet durch User
von Hans H. (loetkolben)


Lesenswert?

Torsten C. schrieb:
...
> Ich hätte generieren müssen:
>
1
enum WordPos {
2
>   WP_DUMMY, // to have enum int value same as herberts index
3
>   WP_1_ES, // ES
4
>   WP_2_IST, // IST
5
>   WP_3_VIERTEL, // VIERTEL
6
>   WP_6_EIN = 4, // EIN
7
>   WP_7_EINS = 5, // EINS
8
>   WP_8_IN = 6, // IN
9
>   ...

Nee, damit erreichst Du gar nichts, denn der numerische Wert zB. von 
WP_6_EIN ist ja numerisch vorher schon 4.
Das = ist nur nützlich wenn du möchtest das WP_6_EIN z.B. den 
numerischen Wert 6 hat, dann schreibt man WP_6_EIN = 6.

Ich würde trotzdem stark begrüßen wenn in den Access-Tabellen nur mit 
den Bezeichnern wie "ES", "EIN", "EIN2" gearbeitet wird, und Dein 
Programm die enum - Werte (und die zugehörigen Indizes in tbl_hours, 
tbl_minutes) lückenlos und von Null an erzeugt.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Hans H. schrieb:
> Ich würde trotzdem stark begrüßen wenn in den Access-Tabellen nur mit
> den Bezeichnern wie "ES", "EIN", "EIN2" gearbeitet wird

Aber dafür brauchen wir m.E. kein Extra-Update von Herbert .

Oder müssen die Enums jetzt feststehen, weil sie im übergeordneten 
C-Code benötigt werden? Ich mach das jetzt so:
1
enum WordPos {
2
    WP_0_1_ES,      // ES
3
    WP_1_2_IST,     // IST
4
    WP_2_3_VIERTEL, // VIERTEL
5
    WP_3_6_EIN,     // EIN
6
    WP_4_7_EINS,    // EINS 
7
    ...
8
    WP_7_10_EIN,...

Hans H. schrieb:
> Es werden bei mir allerdings immer noch wirre Wortteile angeschaltet,
> muß ich weiter Fehler suchen ;-(

Das wird mit der V.06 dann hoffentlich erledigt sein.

Hans H. schrieb:
> Nee, damit erreichst Du gar nichts

Stimmt, wie auch immer. So wär's korrekt gewesen:

>   WP_6_EIN = 6,  // EIN
>   WP_7_EINS = 7, // EINS

Ich korrigiere das.

Wenn Herbert das in der .accdb ändert, wird der neue Code automatisch 
lauten:
1
enum WordPos {
2
    WP_0_ES,      // ES
3
    WP_1_IST,     // IST
4
    WP_2_VIERTEL, // VIERTEL
5
    WP_3_EIN,     // EIN
6
    WP_4_EINS,    // EINS 
7
    ...
8
    WP_7_EIN_1,
9
    ...

OK? Von Herbert kommt dann nur das "EIN", "EIN_1", "EIN_2" usw. Halt wie 
früher mit den Sternen, nur C-kompatibel.

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Die Display.h ist aktualisiert CodeGen v0.6.

In der tables.h habe ich auch die DB-Indizes genommen und keine eigenen 
erzeugt. Ich schaue gleich mal, aber da ist vielleicht der gleiche Bug 
drin.

PS: Dienstag bin ich mit meinem CooCox-Projekt voraussichtlich auch so 
weit, dass ich den generierten Code selber testen kann.

Ich mache aber erstmal 16x16 mit zwei LED-Bildschirm-Kacheln und einem 
Sandwich aus Overheadfolie - Butterbrotpapier - Overheadfolie.

Ich denke, wenn zwei Overheadfolien aus einem Laserdrucker sollten für 
einen ersten Prototypen reichen.

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

Hans H. schrieb:
> Ich dachte Du hast die Zahl vorangestellt um z.B. in tbl_hours gleich zu
> wissen was hour_idx0..hour_idx6 bedeutet.
> D.h. dort steht eine 17 -> 17_ELF ohne Nachschauen.

So ist das auch gedacht.

Hans H. schrieb:
> Aber es gibt durch die Lücken halt eine falsche Zuordnung Name ->
> Position innerhalb der WordPos-Enumeration.
> Im C-Code hat z.B. WP_17_ELF den numerischen Wert 15.

Das verstehe ich nicht.
Ich verstehe überhaupt eigentlich nicht, warum Ihr die Wörter auswertet. 
Ist doch eh schon alles numerisch in den Tabellen vordefiniert.

Der C-code braucht doch nur anhand der tbl_modes und der RTC den 
entsprechenden (numerisch definierten) "Record" aus den Tabellen 
tbl_hours und tbl_minutes holen, dort ist (numerisch) hinterlegt, welche 
Wörter zu verwenden sind, und aus wievielen Wörtern (Indizes) die 
Zeitanzeige besteht. Die Bezeichnungen aus der tbl_words benötigt Ihr 
doch eigentlich überhaupt nicht, die sind ja eigentlich nur zum 
Erstellen der Tabellen erforderlich gewesen?!

Mit den numerischen Index-Informationen aus der tbl_hours und 
tbl_minutes geht die Software in die Worttabelle, holt sich dort 
nacheinander jeweils die Startposition und Anzahl der zu aktivierenden 
LEDs, und setzt sie unter Verwendung der berechneten Zwischenräume zu 
einer 288 bits langen Queue zusammen, solange, bis die in die tbl_hours 
bzw. tbl_minutes definierte Länge (=Anzahl der Wörter) erreicht ist.

Eine logische Verbindung zwischen Wort-Index und Inhalt war von mir 
nicht erwünscht und wurde daher auch nicht angestrebt. Der Index ist als 
reine Ordnungszahl gedacht, um den Datensatz aufzufinden, den er 
repräsentiert.

Aber wie schon vorhin gesagt - ich stehe auf der Leitung, helft mir 
bitte herunter!

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> aber da ist vielleicht der gleiche Bug
> drin.

Ja, mehrere von der Sorte. :-(

tahbles.h in CodeGen v0.6 ist auch noch fehlerfaft.

Ich schmeisse nun alle DB-Keys raus und ersetze sie durch selbst 
erzeugte Indizes. Dann kann in der Datenbank stehen was wolle und der 
Index mit 1 beginnen. Ab CodeGen v0.7 wird der Index immer mit 0 
beginnen, wie es hätte von Anfang an sein müssen.

OT: Erste Rommé-Runde: Nur 7 Punkte. :-)

von Herbert P. (herb3472)


Lesenswert?

Torsten C. schrieb:
> Wenn Herbert das in der .accdb ändert, wird der neue Code automatisch
> lauten:
> enum WordPos {
>     WP_0_ES,      // ES
>     WP_1_IST,     // IST
>     WP_2_VIERTEL, // VIERTEL
>     WP_3_EIN,     // EIN
>     WP_4_EINS,    // EINS
>     ...
>     WP_7_EIN_1,
>     ...

Ich ändere das selbstverständlich gerne, aber es besteht zudem ab Access 
2007/2010 auch die Möglichkeit, das selbst mit einem berechneten Feld zu 
machen:

einfach in der Tabelle tbl_words neues Feld "Code" erstellen, als 
"Berechnet" definieren, und dann folgende Formel eintragen:

"WP" & "_" & [word_ix] & "_" & [text_show]

ergibt einen String im oben vorgeschlagenen Format.

Gutes Gelingen!

P.S.: ob das bei Office 2003 auch so funktioniert, weiß ich leider nicht 
mehr.

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

Torsten C. schrieb:
> Ab CodeGen v0.7 wird der Index immer mit 0
> beginnen, wie es hätte von Anfang an sein müssen.

Ich hab 0 deshalb nicht verwendet, um damit Fehler abfangen zu können. 0 
= NULL, unerlaubter Zustand.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> "WP" & "_" & [word_ix] & "_" & [text_show]

Die [word_ix]-Werte 4 und 5 gibt es in der 
WC24h_18x16_V2_1134_5.Dez.2014 nicht. Macht nix. Ist eh blöd, DB-Keys zu 
exportieren. Die nutzt man nur für Referenzen, nicht für Exporte. => 
Mein Fehler.

Herbert P. schrieb:
> 0 = NULL, unerlaubter Zustand.

Für die DB auch 100% OK. Im µC unnötiger Speicherbedarf.

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

Hans H. schrieb:
> Ich würde trotzdem stark begrüßen wenn in den Access-Tabellen nur mit
> den Bezeichnern wie "ES", "EIN", "EIN2" gearbeitet wird,

Auch das lässt sich gerne machen, wenn Ihr Euch darauf festlegen könnt.

von Herbert P. (herb3472)


Lesenswert?

Torsten C. schrieb:
> Die [word_ix]-Werte 4 und 5 gibt es in der
> WC24h_18x16_V2_1134_5.Dez.2014 nicht.

Das ist dadurch entstanden, dass ich für "VIERTEL" - das ich 
ursprünglich übersehen hatte - Platz brauchte und deshalb die 
ursprüngich mit 4 und 5 indizierten Wörter "WIRD" und "SIND" ersatzlos 
streichen musste

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Das ist dadurch entstanden, dass

wodurch auch immer, passt, kann so bleiben.

Herbert P. schrieb:
> wenn Ihr Euch darauf festlegen könnt

auch dafür, ist aber nicht dringend, nur "schöner".

von Herbert P. (herb3472)


Lesenswert?

Um zukünftige Portationen und Kompilationen weitgehend fehlerfrei 
abwickeln zu können, möchte ich mit den Daten der accdb gerne 
Datenkonsistenz herstellen. Bitte daher um Bekanntgabe der 
erforderlichen Änderungen in der accdb.

von Hans H. (loetkolben)


Lesenswert?

Herbert P. schrieb:
> Das verstehe ich nicht.
> Ich verstehe überhaupt eigentlich nicht, warum Ihr die Wörter auswertet.
> Ist doch eh schon alles numerisch in den Tabellen vordefiniert.

Die Wörter werten ich nicht aus, aber wenn sie schon einen Bezug zum 
DB-Index im Namen haben sollte der stimmen.

> Eine logische Verbindung zwischen Wort-Index und Inhalt war von mir
> nicht erwünscht und wurde daher auch nicht angestrebt. Der Index ist als
> reine Ordnungszahl gedacht, um den Datensatz aufzufinden, den er
> repräsentiert.
>

Wie Torsten auch schon bemerkte, für den Datenbankler ist ein Index eine 
Zahl, die auch mal Lücken haben kann und mit 1 beginnt ;-)

Der C-ler will als Index mit 0 anfangen und nie nie Lücken drin haben.

Warum:
1
const char* lustigesArray[]= {
2
"Heute",
3
"Morgen"
4
};

Dann ist ein Index auf ein Element des Arrays die Zahl 0 oder 1.
Wenn der Index so definiert wäre daß 1 für Heute und 3 für Morgen gilt, 
müßte man das Array so definieren:
1
const char* lustigesArray[]= {
2
NULL,    // oder "invalid" oder ""...
3
"Heute",
4
NULL,    // oder "invalid" oder ""...
5
"Morgen"
6
};

Und das gefällt keinem C-Programmierer ;-)


Als Fazit hat Torsten schon bemerkt, du nutzt deine DB-Keys und der 
C-Export muß dann das richtige draus machen.

von Herbert P. (herb3472)


Lesenswert?

Was soll ich bei den 4 LEDs unten als Text eintragen?

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Um zukünftige Portationen und Kompilationen weitgehend fehlerfrei
> abwickeln zu können, möchte ich mit den Daten der accdb gerne
> Datenkonsistenz herstellen. Bitte daher um Bekanntgabe der
> erforderlichen Änderungen in der accdb.

Nur EINS, EINS_1, EINS_2 usw.

Für die Konsistenz habe ich die DB-Indizes in den Kommentaren, hier 
z.B.:
1
static const struct MinuteDisplay tbl_minutes[MinuteModesCount][MinuteCount]= {
2
  { // 0: Mode 1 ES IST MM NACH

von Herbert P. (herb3472)


Lesenswert?

Torsten C. schrieb:
> Nur EINS, EINS_1, EINS_2 usw.

Ich würde gern bei mehrfach vorkommenden Wörtern schon beim ersten Wort 
mit Index _1 beginnen, wäre das in Ordnung?

Torsten C. schrieb:
> Für die Konsistenz habe ich die DB-Indizes in den Kommentaren, hier
> z.B.:
> static const struct MinuteDisplay
> tbl_minutes[MinuteModesCount][MinuteCount]= {
>   { // 0: Mode 1 ES IST MM NACH

OKI, SUPER!

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Was soll ich bei den 4 LEDs unten als Text eintragen?

[text] ok, aber "LED_1" oder "LED1" statt "74_LED1"

[text_show] . oder ●

Für µc wandel ich das eine in das andere um, für den PC (C#-DMU) das 
andere in das eine. Wandeln muss ich so und so.

von Herbert P. (herb3472)


Lesenswert?

Torsten C. schrieb:
> [text] ok, aber "LED_1" oder "LED1" statt "74_LED1"
>
> [text_show] . oder ●

Ich hab das alte Feld "text" in "text_indexed" umbenannt und ein neues 
Feld "text" mit den Inhalten wie oben besprochen eingefügt. Die LEDs 
habe ich mit ._1 bis ._4 bezeichnet.

Die aktualisierte .accdb sollte gleich in deinem Posteingang sein. Das 
Mail mit der .mdb für Hans schick ich gleich an ihn weg.

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> Ich muss jetzt Rommé spielen, aber ich versuche das nebenbei zu
> korrigieren.

So, war beim Rommé auf dem letzten Platz. :-( Heute Abend schaffe ich 
die Korrektur nicht mehr. Für die tables.h muss ich doch einiges 
umbauen, um komplett unabhängig von den DB-Indizes zu sein. Bei 
display.h war das einfacher.

Herbert P. schrieb:
> Die aktualisierte .accdb sollte gleich in deinem Posteingang sein

OK, Morgen aktualisiere ich dann alles mit der neuen .accdb und CodeGen 
v0.7.

Gute N8.

VG Torsten C. ➜ Für Neu-Eisteiger gibt es den
Beitrag "WortUhr/WordClock: Minutengenau, 24h, RGB – Für Neu-Einsteiger"

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Ich bin gerade am verzweifeln. Ich baue gerade einen Balkon nach dem 
anderen in die Import-Software, weil die "Datenbank" eher ein 
umgewandeltes Excel-Workbook ohne referenzielle Integrität ist. Alles, 
was ich noch aus der Vorlesung "Datenmodellierung" weiss, stört mich im 
Moment daran, 'ne schnelle pragmatische Lösung zu finden, um die DB-Keys 
für die Code-Generierung zu ignorieren und die DB-Keys trotzdem als 
Referenz, in den Kommentaren und für Anker im Generator der 
"Horror-Seiten" zu benutzen. Ich muss erstmal drüber schlafen.

PS: Mir fällt gerade was ein, probiere ich morgen (inzwischen heute).

VG Torsten C. ➜ Für Neu-Eisteiger gibt es den
Beitrag "WortUhr/WordClock: Minutengenau, 24h, RGB – Für Neu-Einsteiger"

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

@Torsten:
es spricht nichts dagegen, die DB-Keys so abzuändern, dass sie für die 
Code-Umwandlung praktikabel sind.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> es spricht nichts dagegen, die DB-Keys so abzuändern, dass sie für die
> Code-Umwandlung praktikabel sind.

Dann müsste ich viele Änderungen wieder rückgängig machen und hätte 
einen "nicht robusten" Import und einen "nicht robusten" Code-Generator. 
Ich möchte mich aber auf meine Software verlassen können.

Wenn ich das so machen würde, gäbe es immer "Mecker" von mir, wenn mein 
Tool die DB nicht "schluckt". Das können wir so machen, aber dann 
dürfen keine Indizes übersprungen werden und alle Indizes müssen mit 
Null beginnen.

Erstens möchte ich Dir das nicht antun und zweitens kann man das mit der 
akuellen Datenmodellierung  auch nicht durch referenzielle Integrität 
sicher stellen. Die Minuten- und Stunden- Modi sind aktuell redundant 
in den Minuten- und Stunden-Tabellen. Es gibt keine Minuten-Modi-Tabelle 
und keine Stunden-Modi-Tabelle. Ohne diese zusätzlichen zwei Tabellen 
wird es nie referenzielle Integrität geben. Wenn wir das jetzt umstellen 
würden, würden wir noch ein paar Tage auf abgesichert gültigen 
tables.h-Code warten.

Glaub mir: Einfacher und sicherer ist es, die DB-Keys nicht zu benutzen 
und die Import-Software entsprechend robust zu machen. DB-Keys sind 
keine Daten. DB-Keys könnten (wie gesagt) theoretisch auch UUIDs sein. 
Das muss nach "Lehrmeinung" egal sein.

Falls die DB-Keys zufällig den Indizes oder den den (Indizes+1) in den 
Arrays entsprechen, ist das OK, aber das ist m.E "Luxus" und darf 
keine_Voraussetzung für korrekten C-Code sein.

PS: Aber falls es unser Team so will, bin ich auch zu unrobusten 
Schandtaten entgegen der "Lehrmeinung" bereit.

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Erläuterung: Solange "referenzielle Integrität" und lückenfreie Indizes 
nicht sichergestellt sind, muss ich den Code-Generator immer darauf 
vorbereiten, dass ein Index übersprungen wird: Entweder weil der Index 
im Original bereits einen "Sprung" hat, oder weil ich beim Import einen 
Datensatz wegen der Verletzung der referenziellen Integrität 
überspringen muss. Peng!

Da "lückenfreie Indizes" nicht durch ACCESS sichergestellt werden 
können, hilft m.E. alles nix! "Referenzielle Integrität" ist halt nur 
"die halbe Miete".


VG Torsten C. ➜ Für Neu-Eisteiger gibt es den
Beitrag "WortUhr/WordClock: Minutengenau, 24h, RGB – Für Neu-Einsteiger"

von Herbert P. (herb3472)


Lesenswert?

Vorschlag:

Warum ergänzt man nicht die tbl_words mit Dummies für die fehlenden 
Indizes? Es ist ja nicht gesagt, dass jedes Wort aus der tbl_words auch 
tatsächlich Verwendung finden muss. Das stellt zwar keine referenzielle 
Integrität her, aber die Indizes wären damit lückenlos.

Referentielle Integrität: ich hab die Tabellen so erstellt, dass sie für 
mich einigermaßen leicht und übersichtlich editierbar waren. Dass es 
dadurch zu Redundanzen bei den tbl_hours und tbl_minutes kam, habe ich 
als "lässliche Sünde" betrachtet, da ja die Anzahl der Datensätze 
überschaubar ist und Fehler leicht manuell ausgebessert werden können. 
Dass sich dadurch Probleme bei der Portierung ergeben würden, war mir 
nicht bewusst. Wirklich sorry :-(

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Warum ergänzt man nicht die tbl_words mit Dummies für die fehlenden
> Indizes? Es ist ja nicht gesagt, dass jedes Wort aus der tbl_words auch
> tatsächlich Verwendung finden muss. Das stellt zwar keine referenzielle
> Integrität her, aber die Indizes wären damit lückenlos.

Genau so habe ich das am Freitag auch gemacht, als ich die Lücke 
entdeckte. Einfach 2 Dummies definiert. Dann passte wieder alles.

Ist die einfachste Methode.

von Herbert P. (herb3472)


Lesenswert?

Frank M. schrieb:
> Herbert P. schrieb:
>> Warum ergänzt man nicht die tbl_words mit Dummies für die fehlenden
>> Indizes? Es ist ja nicht gesagt, dass jedes Wort aus der tbl_words auch
>> tatsächlich Verwendung finden muss. Das stellt zwar keine referenzielle
>> Integrität her, aber die Indizes wären damit lückenlos.
>
> Genau so habe ich das am Freitag auch gemacht, als ich die Lücke
> entdeckte. Einfach 2 Dummies definiert. Dann passte wieder alles.
>
> Ist die einfachste Methode.

Und wo holpert's noch?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Und wo holpert's noch?

display.h:
1
enum WordPos {
2
WP_0_1_ES // ES
3
WP_1_2_IST // IST
4
WP_2_3_VIERTEL // VIERTEL
5
...

Da fehlen sämtliche Kommas. Ich verstehe nicht, warum Torsten nicht ein 
einfaches leeres main.c mit
1
#include "tables.h"
2
#include "display.h"

angelegt hat, um wenigstens die Syntaxfehler selbst zu sehen.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Mit obigen Änderungen läuft es, wie man sich hier überzeugen kann:

 http://uclock.de/

Dummies habe ich wie folgt definiert:
1
enum WordPos {
2
WP_0_1_ES, // ES
3
WP_1_2_IST, // IST
4
WP_2_3_VIERTEL, // VIERTEL
5
WP_DUMMY1,                         // fm Dummy1
6
WP_DUMMY2,                         // fm Dummy2
7
WP_3_6_EIN, // EIN
8
WP_4_7_EINS, // EINS

und:
1
static const struct WordIllu illumination[1][WpCount]= {{ // dummy-dimension for variant with capital ß
2
{0,0,2}, // WP_0_1_ES = "ES"
3
{0,3,3}, // WP_1_2_IST = "IST"
4
{0,7,7}, // WP_2_3_VIERTEL = "VIERTEL"
5
{ 0, 0, 0 },                        // fm Dummy1
6
{ 0, 0, 0 },                        // fm Dummy2
7
{0,14,3}, // WP_3_6_EIN = "EIN"
8
{0,14,4}, // WP_4_7_EINS = "EINS"
9
{0,15,2}, // WP_5_8_IN = "IN"

Beide Änderungen in display.h, jeweils 2 Dummies eingefügt.

@Torsten:

Den Sprung von 3 nach 6 solltest Du im Codegenerator ja abfangen können. 
In so einem Fall solltest Du einfach Dummies einfügen, wenn der Sprung > 
1 ist. Warum kompliziert, wenn es auch einfach geht ;-)

: Bearbeitet durch Moderator
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

@Herbert:

Nach wenigen Probe-Klicks direkt einen Fehler gefunden:

   http://uclock.de/?x=0&h=14&m=17

SIEBEN ZEHN -> SIEB ZEHN

Dagegen hier:

   http://uclock.de/?x=0&h=14&m=27

SIEB UND ZWANZIG -> SIEBEN UND ZWANZIG

: Bearbeitet durch Moderator
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Dass sich dadurch Probleme bei der Portierung ergeben würden, war mir
> nicht bewusst. Wirklich sorry :-(

Mach Dir keinen Kopf. Das kriege ich auch so hin. Das Problem ist nur, 
ich bin im Moment "unter Wasser". Eine Korrektur der tables.h kann etwas 
dauern.

Frank M. schrieb:
> Ich verstehe nicht, warum Torsten nicht ein
> einfaches leeres main.c … angelegt hat, um wenigstens die
> Syntaxfehler selbst zu sehen.

Zeitdruck. Ist der selbst gemacht, oder habe ich bis Mittwoch Zeit?

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Frank M. schrieb:
> Den Sprung von 3 nach 6 solltest Du im Codegenerator ja abfangen können.
> In so einem Fall solltest Du einfach Dummies einfügen, wenn der Sprung >
> 1 ist. Warum kompliziert, wenn es auch einfach geht ;-)

"Weils besser ist". ;-) Jetzt ändere ich das nicht wieder zurück. Bis 
auf die Kommas ist die Display.h ja nun wohl fertig. Oder? OK?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> "Weils besser ist". ;-) Jetzt ändere ich das nicht wieder zurück.

Was änderst Du nicht wieder zurück? Ich musste jedenfalls die Dummies 
heute morgen noch einfügen mit dem aktuellen Stand von tables.h und 
display.h. Da ist der Bug also noch drin.

> Bis auf die Kommas ist die Display.h ja nun wohl fertig. Oder? OK?

Wenn das Lückenproblem auch gefixt ist, ja.

Das einzige, was ich noch unschön finde, ist, dass die C-Konstanten 
nicht konsequent in Großbuchstaben geschrieben werden, wie das in C 
Konvention ist.

Ausserdem finde ich solche Namensgebung irritierend:
1
#define DisplayX 18

Denn das sieht eher wie eine Positionsangabe aus. Tatsächlich ist es 
aber die Angabe einer Anzahl. Und das ist nur ein Beispiel.

Da sollten wir uns vielleicht auf geeignetere Namen einigen. Ich hatte 
es in meiner ersten Version WC_COLUMNS (bzw. WC_ROWS) genannt.

P.S.
Doch, einen Wunsch hätte ich noch: Die Zahlwörter-Strings fehlen in 
display.h. Dadurch kann ich bei http://uclock.de die aktuelle Uhrzeit 
nicht mehr als String ausgeben, also:

   ES IST SIEBEN UHR EIN UND FÜNFZIG

Das wäre zum Debuggen noch interessant, bei der endgültigen Uhr brauchen 
wir es sowieso nicht mehr.

: Bearbeitet durch Moderator
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

@Herbert: Noch ein Doppel-Tabellenfehler:

  http://uclock.de/?x=4&h=14&m=6

SECH   -> SECHS
MINUTE -> MINUTEN

Und noch einer:

   http://uclock.de/?x=4&h=14&m=16

SECHS -> SECH

: Bearbeitet durch Moderator
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

@Herbert: Noch ein Fehler:

http://uclock.de/?x=6&h=18&m=15

SIEB -> SIEBEN

Komisch, ich hätte in diesem Modus eigentlich eher

   ES IST VIERTEL NACH SECHS   (Wessi)

und nicht

   ES IST VIERTEL SIEBEN       (Ossi und Teil des Schwabenlandes)

erwartet.

Vielleicht sollten wir uns da nochmal prinzipiell über die deutschen 
Sprachgewohnheiten unterhalten?

Ich schreibe es nochmal in Kurzform:
1
Wessi               Rhein-Ruhr          Ossi                Schwaben
2
VIERTEL NACH ACHT   VIERTEL NACH ACHT   VIERTEL NEUN        VIERTEL NEUN
3
ZEHN VOR HALB NEUN  ZWANZIG NACH ACHT   ZEHN VOR HALB NEUN  ZWANZIG NACH ACHT
4
ZEHN NACH HALB NEUN ZWANZIG VOR NEUN    ZEHN VOR HALB NEUN  ZWANZIG VOR ACHT
5
VIERTEL VOR NEUN    VIERTEL VOR NEUN    DREIVIERTEL NEUN    DREIVIERTEL NEUN

usw.

(Schwaben benutzen also einen Mischmasch aus Rhein-Ruhr und Ossi)

In welchen Modes spiegeln sich diese regions-abhängigen Varianten (die 
ich schon vor einigen Wochen hier systematisch aufgeschrieben habe) 
wider?

: Bearbeitet durch Moderator
von Herbert P. (herb3472)


Lesenswert?

@FRANK

Sorry, ich kann Deine Fehler in meiner db nicht finden.

Aber einen anderen Fehler habe ich gefunden:

tbl_minutes, Mode 9:

die Angabe der Stringlängen fehlt

Ich werd meine Letztversion (inkl. Dummies bei der tbl_words) noch heute 
hochladen, aber bitte etwas Geduld (voraussichtlich erst Mittag wieder 
Zeit).

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

Frank M. schrieb:
> Vielleicht sollten wir uns da nochmal prinzipiell über die deutschen
> Sprachgewohnheiten unterhalten?
>
> Ich schreibe es nochmal in Kurzform:Wessi               Rhein-Ruhr
> Ossi                Schwaben
> VIERTEL NACH ACHT   VIERTEL NACH ACHT   VIERTEL NEUN        VIERTEL NEUN
> ZEHN VOR HALB NEUN  ZWANZIG NACH ACHT   ZEHN VOR HALB NEUN  ZWANZIG NACH
> ACHT
> ZEHN NACH HALB NEUN ZWANZIG VOR NEUN    ZEHN VOR HALB NEUN  ZWANZIG VOR
> ACHT
> VIERTEL VOR NEUN    VIERTEL VOR NEUN    DREIVIERTEL NEUN    DREIVIERTEL
> NEUN
>
> usw.

Danke, gute Anregung!

Frank M. schrieb:
> In welchen Modes spiegeln sich diese regions-abhängigen Varianten (die
> ich schon vor einigen Wochen hier systematisch aufgeschrieben habe)
> wider?

In den Modi 7 bis 11. Deine systematische Aufzeichnung habe leider 
übersehen, auf sowas hätte ich nämlich gewartet bzw. gehofft :-(

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Schau Dir bitte mal die Liste aus dem Word Clock-Projekt an:

  http://www.mikrocontroller.net/articles/Word_Clock#Frontplatte

(Kapitel "Deutsch: 3-sprachig")

Schwaben-Modus (ossi + 20 vor/nach) kam später noch hinzu.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> In den Modi 7 bis 11. Deine systematische Aufzeichnung habe leider
> übersehen, auf sowas hätte ich nämlich gewartet bzw. gehofft :-(

Eine systematische Liste hatte ich in diesem Thread hier gepostet:

  Beitrag "Re: Minutengenaue 24 Stunden-Wortuhr - wer will mitbauen?"

(Da fehlte aber noch der Schwabenmodus)

Musst Du übersehen haben ;-)

von Herbert P. (herb3472)


Lesenswert?

Frank M. schrieb:
> Musst Du übersehen haben ;-)

Ja, hab ich übersehen, sorry :-(

Ich werde die Regionalmodi noch heute entsprechend modifizieren. Bitte 
beachtet bei Eurer Portierung, dass heute noch ein Update der db kommt!

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Noch einer:

  http://uclock.de/?x=8&h=19&m=16

Sieht ziemlich kaputt aus. ;-)

von Herbert P. (herb3472)


Lesenswert?

Muss das Update der db leider auf morgen verschieben, sorry :-(

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Muss das Update der db leider auf morgen verschieben, sorry :-(

Wirklich nicht tragisch. Das ist nur unser Hobby... das muss auch mal 
warten.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Uhrzeitanzeige läuft nun auf dem STM32F4-Discovery auch auf den 
WS2812-Stripes.

Damit ist nun umgesetzt:

 - Anlernen einer IR-Fernbedienung (FB)
 - Stellen der Uhrzeit per FB
 - Anzeige der Uhrzeit auf WS2812-Stripes

Optional zum Debuggen/Testen:

 - MCURSES-Monitor im Terminal;

   - zur Anzeige der Uhrzeit als 18x16 Text-Matrix
   - Stellen der Uhrzeit

Ich werde jetzt das CooCox-Projekt noch etwas rund machen und dann 
veröffentlichen. Vielleicht noch heute abend. Ich würde mich dann 
freuen, wenn sich einige bereit erklären, an der Code-Entwicklung 
mitzuwirken.

Was noch folgt in den nächsten Tagen:

 - Sanftes Überblenden der Uhrzeiten auf den LEDs
 - Farbprogramme (Wählen der Farbe, optional automatisches Wechseln)
 - Einstellen des Anzeigemodus ("Sprache") per FB
 - Speichern aller Einstellungen in externem EEPROM
 - Anbindung der DS3231-RTC

Weitere Ideen?

Gruß,

Frank

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Das oben angekündigte CooCox-Projekt für das STM32F4-Discovery-Board ist 
online:

  http://www.mikrocontroller.net/articles/WordClock24h#CooCox_Projekt

Viel Spaß!

von Herbert P. (herb3472)


Lesenswert?

Frank M. schrieb:
> Das oben angekündigte CooCox-Projekt für das STM32F4-Discovery-Board ist
> online:

WOW! Congratulations! Du bist SPIIIITZZZEEEE!

von Herbert P. (herb3472)


Lesenswert?

Frank M. schrieb:
> Weitere Ideen?

- Silvestermodus: Countdown zum Jahreswechsel ab 23:30
  mit Sekunden-Countdown ab 23:59 und "Silvester-Feuerwerk" um 00:00

- (Abschaltbarer) Stundenschlag von Original Pendeluhr?

- echtes Pendel mit magnetomechanischer Metronom-Aktivierung
  und "Ticken"?

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

Frage zu den Regionalmodi:

genügt für jede Region ein Modus "ES IST MM NACH/VOR ..."

oder wird auch ein Modus "ES IST MM MINUTEN NACH/ VOR ..." gewünscht?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Frage zu den Regionalmodi:
>
> genügt für jede Region ein Modus "ES IST MM NACH/VOR ..."
>
> oder wird auch ein Modus "ES IST MM MINUTEN NACH/ VOR ..." gewünscht?

Machs nicht zu umfangreich, sonst steigt da nachher keiner mehr durch. 
Lass ersteres weg und nimm nur zweiteres, also "ES IST MM MINUTEN 
NACH/ VOR ...". Genau so lesen die Moderatoren im Radio jeden Morgen 
die Uhrzeit vor. ;-)

von Herbert P. (herb3472)


Lesenswert?

Frank M. schrieb:
> Machs nicht zu umfangreich, sonst steigt da nachher keiner mehr durch.
> Lass ersteres weg und nimm nur zweiteres, also "ES IST MM MINUTEN
> NACH/ VOR ...". Genau so lesen die Moderatoren im Radio jeden Morgen
> die Uhrzeit vor. ;-)

Oki!

Übrigens habe ich vorhin mein Lob lediglich Dich betreffend 
ausgesprochen, Torstens Löwenanteil am Gelingen darf auch nicht 
unerwähnt bleiben!

EIN HOCH AUF EUCH BEIDE, TORSTEN UND FRANK!

UND EIN GROSSES (GROßES) LOB AN ALLE, DIE BISHER SO FLEISSIG MITGEWIRKT 
HABEN!

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Torstens Löwenanteil am Gelingen darf auch nicht
> unerwähnt bleiben!

Allerdings. Die tables.h und display.h funktionieren vorzüglich :-)

> UND EIN GROSSES (GROßES) LOB AN ALLE, DIE BISHER SO FLEISSIG MITGEWIRKT
> HABEN!

Dem kann ich mich nur anschließen.

von Herbert P. (herb3472)


Lesenswert?

Wie sollen bei den Regionalmodi die Minuten zwischen :15 und :45 
angezeigt werden?

ES IST EIN UHR
.......
ES IST FÜNF MINUTEN NACH EINS
.......
ES IST ZEHN MINUTEN NACH EINS
.......
ES IST VIERTEL NACH EINS / VIERTEL ZWEI
....... SECH ZEHN MINUTEN NACH EINS
....... SIEB ZEHN MINUTEN NACH EINS
....... ACHT ZEHN MINUTEN NACH EINS
....... NEUN ZEHN MINUTEN NACH EINS
ES IST ZWANZIG MINUTEN NACH EINS / ZEHN MINUTEN VOR HALB ZWEI
....... EIN UND ZWANZIG MINUTEN NACH EINS/ NEUN MINUTEN VOR HALB ZWEI
....... ZWEI UND ZWANZIG MINUTEN NACH EINS/ ACHT MINUTEN VOR HALB ZWEI
....... DREI UND ZWANZIG MINUTEN NACH EINS/ SIEBEN MINUTEN VOR HALB ZWEI
....... VIER UND ZWANZIG MINUTEN NACH EINS/ SECHS MINUTEN VOR HALB ZWEI
....... FÜNF UND ZWANZIG MINUTEN NACH EINS/ FÜNF MINUTEN VOR HALB ZWEI
....... VIER MINUTEN VOR HALB ZWEI
....... DREI MINUTEN VOR HALB ZWEI
....... ZWEI MINUTEN VOR HALB ZWEI
....... EINE MINUTE VOR HALB ZWEI
ES IST HALB ZWEI
....... EINE MINUTE NACH HALB ZWEI
....... ZWEI MINUTEN NACH HALB ZWEI
....... DREI MINUTEN NACH HALB ZWEI
....... VIER MINUTEN NACH HALB ZWEI
ES IST FÜNF MINUTEN NACH HALB ZWEI
....... SECHS MINUTEN NACH HALB ZWEI
....... SIEBEN MINUTEN NACH HALB ZWEI
....... ACHT MINUTEN NACH HALB ZWEI
....... NEUN MINUTEN NACH HALB ZWEI
ES IST ZEHN MINUTEN NACH HALB ZWEI / ZWANZIG MINUTEN VOR ZWEI
........NEUN ZEHN MINUTEN VOR ZWEI/ VIER MINUTEN VOR DREIVIERTEL ZWEI
........ACHT ZEHN MINUTEN VOR ZWEI/ DREI MINUTEN VOR DREIVIERTEL ZWEI
........SIEB ZEHN MINUTEN VOR ZWEI/ ZWEI MINUTEN VOR DREIVIERTEL ZWEI
........SECH ZEHN MINUTEN VOR ZWEI/ EINE MINUTE VOR DREIVIERTEL ZWEI
ES IST VIERTEL VOR ZWEI / DREIVIERTEL ZWEI
....... VIER ZEHN MINUTEN VOR ZWEI
....... DREI ZEHN MINUTEN VOR ZWEI
....... ZWÖLF MINUTEN VOR ZWEI
....... ELF MINUTEN VOR ZWEI
....... ZEHN MINUTEN VOR ZWEI
....... NEUN MINUTEN VOR ZWEI
....... ACHT MINUTEN VOR ZWEI
....... SIEBEN MINUTEN VOR ZWEI
....... SECHS MINUTEN VOR ZWEI
ES IST FÜNF MINUTEN VOR ZWEI
....... VIER MINUTEN VOR ZWEI
....... DREI MINUTEN VOR ZWEI
....... ZWEI MINUTEN VOR ZWEI
....... EINE MINUTE VOR ZWEI

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Wie sollen bei den Regionalmodi die Minuten zwischen :15 und :45
> angezeigt werden?

Hatte ich eigentlich vor ein paar Wochen geschrieben, als ich für alle 
60 Minuten einen Satz aufschrieb, siehe:

  Beitrag "Re: Minutengenaue 24 Stunden-Wortuhr - wer will mitbauen?"

Also:

> ES IST ZWANZIG MINUTEN NACH EINS / *ZEHN MINUTEN VOR HALB ZWEI*

Korrekt.

> ....... EIN UND ZWANZIG MINUTEN NACH EINS/ NEUN MINUTEN VOR HALB ZWEI
> ....... ZWEI UND ZWANZIG MINUTEN NACH EINS/ ACHT MINUTEN VOR HALB ZWEI
> ....... DREI UND ZWANZIG MINUTEN NACH EINS/ SIEBEN MINUTEN VOR HALB ZWEI
> ....... VIER UND ZWANZIG MINUTEN NACH EINS/ SECHS MINUTEN VOR HALB ZWEI
> ....... FÜNF UND ZWANZIG MINUTEN NACH EINS/ FÜNF MINUTEN VOR HALB ZWEI

NEUN MINUTEN VOR HALB ZWEI
....
EINE MINUTE VOR HALB ZWEI
HALB ZWEI
EINE MINUTE NACH HALB ZWEI
...
NEUN MINUTEN NACH HALB ZWEI

> ES IST ZEHN MINUTEN NACH HALB ZWEI / *ZWANZIG MINUTEN VOR ZWEI*

Korrekt.

> ........NEUN ZEHN MINUTEN VOR ZWEI/ VIER MINUTEN VOR DREIVIERTEL ZWEI
> ........ACHT ZEHN MINUTEN VOR ZWEI/ DREI MINUTEN VOR DREIVIERTEL ZWEI
> ........SIEB ZEHN MINUTEN VOR ZWEI/ ZWEI MINUTEN VOR DREIVIERTEL ZWEI
> ........SECH ZEHN MINUTEN VOR ZWEI/ EINE MINUTE VOR DREIVIERTEL ZWEI

NEUN ZEHN MINUTEN VOR ZWEI
...
ZWÖLF MINUTEN VOR ZWEI
ELF MINUTEN VOR ZWEI
ZEHN MINUTEN VOR ZWEI
...
EINE MINUTE VOR ZWEI

P.S.
"VIER MINUTEN VOR DREIVIERTEL ZWEI" hört sich echt grausig an. Das 
können wir uns für den "1. April-Modus" aufheben ;-)

: Bearbeitet durch Moderator
von Joachim B. (jar)


Lesenswert?

Frank M. schrieb:
> P.S.
> "VIER MINUTEN VOR DREIVIERTEL ZWEI" hört sich echt grausig an. Das
> können wir uns für den "1. April-Modus" aufheben ;-)

ist auch Unfug, das wäre in meinem WB Sprachgebrauch elf nach halb zwei

nicht Ossi nicht Schwabe

von Herbert P. (herb3472)


Lesenswert?

Joachim B. schrieb:
> ist auch Unfug, das wäre in meinem WB Sprachgebrauch elf nach halb zwei

Ja, ist Unfug, aber abklären wollte ich's trotzdem. Die Minutentabelle 
hat über 600 Datensätze, da kann ich beim Editieren oft nicht einmal 
mehr ein X von einem U unterscheiden ;-)

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

So, die aktualisierten Dateien sind hochgeladen, die alten Fehler sind 
durch neue ersetzt .....na hoffentlich nicht! Irgendwann muss Murphy ja 
auch einmal Ruhe geben ;-)

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Version 0.3 ist online. Nun kann man per IR-Fernbedienung auch die 
Helligkeiten für die LEDs einstellen - nämlich für jede Farbe getrennt. 
Damit kann man sich nun jede gewünschte Farbe "mischen".

Die Helligkeitssteuerung ist an die logarithmische Empfindlichkeit des 
menschlichen Auges angepasst.

Viel Spaß,

Frank

von Herbert P. (herb3472)


Lesenswert?

@Frank:
klingt ja super!

------------------------

Wird es für den STM32 auch ein PCB geben? Das Discovery Modul ist in der 
Originalversion zu hoch.

Wie siehts mit dem Atmel 1284P-PU aus? Arbeitet da jemand dran, oder 
kommt der in die Bastelkiste?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Wird es für den STM32 auch ein PCB geben? Das Discovery Modul ist in der
> Originalversion zu hoch.

Mal sehen. Ich traue es mir im Moment noch nicht so richtig zu, habe 
bisher nur PCBs für AVRs zusammengezimmert. Da muss ich mich noch ein 
Weilchen einlesen, um zu verstehen, was man mindestens rund um den STM32 
an Peripherie braucht, damit er läuft. Erstmal ist das Disco-Board ein 
hervorragendes Entwicklungsboard. Für die Uhr im Endstadium ist das Ding 
natürlich Overkill. Man kann sich ja nochmal umschauen, was es sonst 
noch für kleinere Boards gibt. Torsten hatte da ja schon mal Vorschläge 
gemacht.

Alternative wäre ein extra Gehäuse für das Disco-Board, wo man auch das 
nötige fette Netzteil für die 288 LEDs mit einbauen könnte. Dann braucht 
man auf dem Weg zur Anzeige nur ein dreiadriges Kabel, was auch nicht 
dicker ist als ein Netzwerkkabel.

> Wie siehts mit dem Atmel 1284P-PU aus? Arbeitet da jemand dran, oder
> kommt der in die Bastelkiste?

Wie ich schon sagte: da die WS2812-Geschichte auf einem AVR nicht ganz 
ohne ist, ohne ihn zu 100% zuzuballern, hat der für mich eigentlich 
keine Priorität. Da können sich gerne andere dran versuchen. Die von mir 
zur Verfügung gestellten STM32-Sourcen lassen sich zum Teil auch auf den 
ATmega portieren - jedenfalls, was die nicht-hardware spezifischen Teile 
betrifft.

von Joachim B. (jar)


Lesenswert?

Herbert P. schrieb:
> Wie siehts mit dem Atmel 1284P-PU aus? Arbeitet da jemand dran, oder
> kommt der in die Bastelkiste?

bin doch bei, meine Platinen sind bestellt und in der Auslieferung, das 
Muster mit DIL 40 läuft nun in der Arduino IDE bin noch am zu Ende 
verdrahten der Ports und dann mache ich mit der SW weiter, DCF77 
Empfänger von ELV sind angekommen.

Plan:
m1284p DIL fertig verdrahten,
an den 117 LED Stripe Ribba 25 anbringen,
DCF77 zur Mitarbeit bewegen
ESP8266 ins wlan NTP
16 x 16 Matrix anschliessen
ins Ribba 50 x 50 bauen

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

@Frank:

STM32 CooCox Installation

Installation von CooCox unter Windows

1. die CooCox CoIDE laden - BROKEN LINK!

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> @Frank:
>
> STM32 CooCox Installation
>
> *Installation von CooCox unter Windows*
>
> 1. die CooCox CoIDE laden - BROKEN LINK!

Dieser Artikel ist nicht von mir ;-)

Nimm einfach folgenden Link:

  http://www.coocox.org/software.html

Ich werde das in dem oben genannten Artikel mal anpassen.

von Herbert P. (herb3472)


Lesenswert?

@Frank: oki thx!

von Herbert P. (herb3472)


Lesenswert?

Joachim B. schrieb:
> bin doch bei, meine Platinen sind bestellt und in der Auslieferung,

Welche Platinen hast Du denn bestellt?

von Joachim B. (jar)


Lesenswert?

Herbert P. schrieb:
> Welche Platinen hast Du denn bestellt?

schon vergessen? hatte doch Links eingestellt.....

http://adventuresinarduinoland.blogspot.de/2011/09/arduino-breadboard-helpers.html
https://github.com/JChristensen/mini1284

sogar jeden Schritt hier dokumentiert

Your boards are on the November 19th 2 layer prototype panel.
Once we fill up the panel with other orders it will be sent off to the 
fabricator

We've sent the panel containing your boards to the fabricator. We expect 
to get them back around November 29th.

We've received the panel containing your boards from the fabricator. We 
expect to have the boards depanelled and shipped within 48 hours.

Your Mighty Mini 1284P copy boards have been depanelized and shipped to 
you via USPS Standard First Class Mail.

Order Details
Ordered on November 18th 2014.
Paid on November 18th 2014 via paypal.
Shipped on November 26th 2014 via USPS Standard First Class Mail
Items Mighty Mini 1284P copy
2.55x0.82 inch (64.77x20.83 mm) 2 layer board.
Your boards have been shipped.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Das Discovery Modul ist in der Originalversion zu hoch.

http://www.exp-tech.de/stm32-nucleo-development-board-for-stm32-f4-series-with-stm32f401re-mcu-supports-arduino

wäre eine Alternative. Der µC ist zwar nicht ganz so fett, aber 
ausreichend. Der Preis ist auch attraktiv. Ausserdem hat das Ding 
Arduino-Steckerleisten ;-)

Ich bestelle mir mal eins. Portierung (andere Ports) sollte nicht 
kompliziert sein.

: Bearbeitet durch Moderator
von Herbert P. (herb3472)


Lesenswert?

Frank M. schrieb:
> Der µC ist zwar nicht ganz so fett, aber
> ausreichend.

Weiß man schon, wieviel Speicher beenötigt wird?

Und gibt es außer mir noch jemanden, der sich für eine Variante der 
WordClock ohne Farbspiele, nur mit weißen LEDs interessiert?

von Herbert P. (herb3472)


Lesenswert?

@Joachim:

die Arduino "Breadboard Helpers" sind ja genial. Gibts die PCBs irgendwo 
zu kaufen (oder sollte ich das übersehen haben)?

http://adventuresinarduinoland.blogspot.de/2011/09/arduino-breadboard-helpers.html

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Herbert P. schrieb:
> Und gibt es außer mir noch jemanden, der sich für eine Variante der
> WordClock ohne Farbspiele, nur mit weißen LEDs interessiert?

kann ich mir kaum vorstellen, jeder hat ein anderes Weissempfinden 
welches Weiss einem genehm ist, das wirst du schon feststellen wenn du 
verschiedene weisse LEDs probierst und was dir gefällt muss anderen 
nicht gefallen, ich denke versuche erst mal deinen Weisston per RGB LED 
zu finden, die hast du ja, erst wenn du damit unzufrieden sein solltest, 
dann kannst du ja anfangen mit den verschiedensten weissen LEDs zu 
probieren.

Ich war jedenfalls enttäuscht von den warmweissen chinesischen 
Downlights die ich als Flurbeleuchtung bestellt hatte, 100€ für den 
Elektronik Schrott.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Weiß man schon, wieviel Speicher beenötigt wird?

Im Moment sind es:

     text     data      bss      dec      hex  filename
     59004     2660    22068    83732    14714  wclock24h.elf

Also ca. 60K Flash und 24KB RAM. Letzteres kann man aber noch 
optimieren, wenn man diverse Strukturen mit _packed_ versieht. 
Ausserdem fällt der MCURSES-Teil im Endstadium weg. Der ist ja jetzt 
nur Entwicklungshilfe.

> Und gibt es außer mir noch jemanden, der sich für eine Variante der
> WordClock ohne Farbspiele, nur mit weißen LEDs interessiert?

Ich muss mal was zu den WS2812-LEDs sagen:

Ich bin ziemlich enttäuscht von den Dingern. Ich benutze zwar schon 
lange RGB-LEDs, aber nie mit einem integrierten Controller. Diese LEDs 
bieten nur 255 Steps (die nicht ans menschliche Auge angepasst sind) pro 
Farbe. Ausserdem machen die Dinger offenbar nur eine 8-Bit-PWM. Gerade 
in den unteren Helligkeitsstufen sind deutlich erkennbare Sprünge zu 
sehen.

Ausserdem ergeben die LEDs in den unteren Helligkeitsstufen bei gleichen 
Helligkeitswerten von R, G und B kein richtiges Weiß. Gerade Blau 
übersteigt die beiden anderen Farben bei weitem, d.h. das Weiß hat einen 
deutlichen Blaustich. Erst bei größeren Helligkeiten relativiert sich 
das wieder.

Vermutlich muss man da noch einen "Weißabgleich" machen, um die Dinger 
wenigstens näher an einen Weißton zu bringen. Das heisst, eine 
Korrekturtabelle muss her :-(

Meine selbstgebauten LED-Streifen

   Beitrag "Equinox-Uhr mit 60 ATtinys"

welche pro LED jeweils einen ATTiny45 benutzen, verwenden 3 x 12-Bit-PWM 
mit insgesamt 3 x 4096 Helligkeitsstufen. Da sind die Farbübergänge 
butterweich. Leider wird das bei dem wclock24h-Projekt mit 288 ATtinys 
ziemlich teuer ;-)

: Bearbeitet durch Moderator
von Herbert P. (herb3472)


Lesenswert?

Frank M. schrieb:
> Vermutlich muss man da noch einen "Weißabgleich" machen, um die Dinger
> wenigstens näher an einen Weißton zu bringen. Das heisst, eine
> Korrekturtabelle muss her :-(

Das hatte ich befürchtet. Lt. Joachim ist allerdings ein Weißabgleich 
angeblich nicht erforderlich. Naja, wir werden ja sehen....

von Joachim B. (jar)


Lesenswert?

Herbert P. schrieb:
> @Joachim:
>
> die Arduino "Breadboard Helpers" sind ja genial. Gibts die PCBs irgendwo
> zu kaufen (oder sollte ich das übersehen haben)?

ich hatte doch verlinkt wo ich meine PCB bestellt habe, OSH Park

The Mighty Mini 1284P
https://github.com/JChristensen/mini1284
Printed circuit boards can be ordered through OSH Park.

für den Rest:
If you'd like to roll your own, the Eagle files are available on github, 
and a bill of materials with all the components needed, including the 
microcontroller and a breadboard, is available on the Mouser web site. 
Note that if you order the microcontroller from Mouser, it will need to 
be programmed with an Arduino bootloader.

hier gibt es ja noch den Platinensammler oder jeden anderen 
Dienstleister der dir aus den Eagle Files Platinen macht.

von Joachim B. (jar)


Lesenswert?

Herbert P. schrieb:
> Lt. Joachim ist allerdings ein Weißabgleich
> angeblich nicht erforderlich.

für mich nicht, aber ich hatte schon mal über die Scheckkarten FB mit 
Franks IRMP einen manuellen Weissabgleich eingebaut, blau raus oder rot 
raus nach Belieben, mir gehen nur die Tasten aus für grün, oder man 
müsste einen Farbkreis installieren um alles durchzufahren, aber da ging 
mir der Speicher aus, deswegen baue ich ja am 1284p löten fast fertig.

aber was rede ich, jeder hat ein anderes Weissempfinden und wie ich 
denke haben schon einige die WS2811/12/b Stripes, probiert es aus was 
euch zusagt oder ob nicht, mehr kann ich nicht sagen aus der Ferne.

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

Joachim B. schrieb:
> ich hatte doch verlinkt wo ich meine PCB bestellt habe, OSH Park

Ich dachte, dsa betraf den Mighty Mini? Ich meinte jedoch die 
"Breadboard Helper Platinen" zur Verringerung des Bauteil- und 
Kabelsalats bei einem Breadboard-Aufbau.

von Joachim B. (jar)


Lesenswert?

Herbert P. schrieb:
> Ich dachte, dsa betraf den Mighty Mini?

ist ja auch so, nur wenn du weiterliest gibts keine Links zum 
Platinenhersteller, nur Links zu den Eagle Files, da muss man sich wohl 
selber um einen Platinenhersteller kümmern, hier den Platinensammler 
oder jeden anderen PCB Anbieter.

von Herbert P. (herb3472)


Lesenswert?

Joachim B. schrieb:
> da muss man sich wohl
> selber um einen Platinenhersteller kümmern, hier den Platinensammler
> oder jeden anderen PCB Anbieter.

Sorry, dass ich mich noch nicht so auskenne und gefragt habe. Ist für 
mich Alles Neuland hier.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Habe gerade die Version 0.3.5 hochgeladen. Dabei wurde die zuweilen 
stockende Steuerung per IR-Fernbedienung verbessert. Die Bedienung ist 
nun deutlich flüssiger.

Man kann nun eine IR-FB-Taste durch Doppelklick repetieren lassen. Dazu 
drückt man zunächst die Taste kurz und direkt anschließend lang. Das ist 
unter anderem nützlich bei der Helligkeitseinstellung. Das mit dem 
Doppelklick ist zwar so nicht gewollt, denn eigentlich sollte eine 
FB-Taste einfach länger festgehalten werden, aber irgendwo ist da noch 
ein kleiner Bug drin. Das hier geschilderte ist also momentan ein 
Workaround, bis ich den Fehler gefunden habe.

Ausserdem leuchten beim Anlernen der 12 IR-Tasten nun die LEDs 1 bis 12 
in der ersten Zeile auf.

: Bearbeitet durch Moderator
von Herbert P. (herb3472)


Lesenswert?

Die aktualisierte Siebdruckvorlage für die Acrylglas-Frontplatte mit 
18x16 Matrix (45 cm x 45 cm Außenmaß) sowie die dazupassende Bohr- und 
Frässchablone für die MDF-Montageplatte sind im Maßstab 1:1 (pdf-Format) 
hochgeladen.

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Die aktualisierte Siebdruckvorlage für die Acrylglas-Frontplatte mit
> 18x16 Matrix (45 cm x 45 cm Außenmaß) sowie die dazupassende Bohr- und
> Frässchablone für die MDF-Montageplatte sind im Maßstab 1:1 (pdf-Format)
> hochgeladen.

Sieht klasse aus :-)

von Joachim B. (jar)


Lesenswert?

Herbert P. schrieb:
> Sorry, dass ich mich noch nicht so auskenne und gefragt habe. Ist für
> mich Alles Neuland hier.

kein Problem, hatte ich auch erst nicht verstanden, kommt alles so 
learning by doing.

zuerst den mitghty gefunden aber keine Platine, dann zu OSH und 
bestellt, ich hatte noch nicht mal weitergelesen, du zeigtest den Weg 
und ich habe geschaut, ah keine Platine, nur was macht man dann ? 
Vorlage gibt es also selber bestellen.

Ist ja fast wie bei uns hier, entweder es findet sich einer für die 
Acryl oder Folien oder Blechteile und wir bekommen eine Sammelbestellung 
hin oder die Vorlagen auch deine Arbeit ! ist nützlich um mit diesem 
selber einen Ersteller zu finden.

von Herbert P. (herb3472)


Lesenswert?

Bitte um Rückmeldung, ob die accdb-Tabellen für die 18x16 Matrix jetzt 
passen!

von Joachim B. (jar)


Lesenswert?

mein Lieblingshändler bietet wieder an
http://www.ebay.de/sch/witopower/m.html?_nkw=&_armrs=1&_ipg=&_from=

ich habe noch mal 2 Sätze bestellt

momentan fehlt mir aber der Überblick in welchem Raster die Buchstaben 
liegen.

Aber der Preis war so interessant das ich notfalls auch schnippeln 
würde, werde eh Platinen bauen (lassen) ob da nun single LEDs raufkommen 
oder Stücke aus geschnittene Stripes ist ja machbar im Layout.

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

Joachim B. schrieb:
> momentan fehlt mir aber der Überblick in welchem Raster die Buchstaben
> liegen.

Die LED-Strips mit 60 LEDs/lfm passen genau zum Raster, das Raster ist 
mit 16,67 mm LED-Abstand exakt für diese Strips ausgelegt, die 
Matrix-Breite beträgt 30 cm.

Vertikal werden nur 16 Zeilen benötigt, um auf ein quadratisches Maß der 
Matrix zu kommen, ist der vertikale Abstand größer (18,75 mm).

Die Abbildungen umd Vorlagen für die 18 x 16 Matrix im Wiki-Artikel 
http://www.mikrocontroller.net/articles/WordClock24h entsprechen exakt 
diesem Rastermaß.

von Herbert P. (herb3472)


Lesenswert?

Ich hab noch nie eine Platine anfertigen lassen. Was kostet so eine 
Platine (double layer) im Format der Matrix (ca. 32 x 32cm) ungefähr, 
und wer ist ein günstiger Anbieter?

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Hallo zusammen,

warum kommt immer alles auf einmal? Und dann noch vor Weihnachten? Immer 
dasselbe. :-(

Ich habe den Thread-Bandwurm seit dem 08.12.2014 20:03 Uhr nachgeholt:

Herbert P. schrieb:
> was kostet so eine Platine ... ungefähr

bilex-lp.com bei 3 Stück z.B.: 356.72 € / 3 = 118,91 €

China ist vielleicht billiger als Bulgarien.

Joachim B. schrieb:
> Aber der Preis war so interessant ...

Ach. ?! Weiter oben hatte ich günstigere Preise von meinen 
Lieblingshändlern gepostet.

Frank M. schrieb:
> Vermutlich muss man da noch einen "Weißabgleich" machen, um die Dinger
> wenigstens näher an einen Weißton zu bringen. Das heißt, eine
> Korrekturtabelle muss her :-(

Das war bei meiner Wohnzimmer-Lampe auch so, aber ich sehe das Problem 
nicht.

Frank M. schrieb:
> Ich bestelle mir mal eins. Portierung (andere Ports) sollte nicht
> kompliziert sein.

Das reicht auch um die noch billigeren China-Module zu programmieren. 
Läuft Dein Linux auch da drauf?

Herbert P. schrieb:
> Wird es für den STM32 auch ein PCB geben?

Von mir ja, aber das kann noch dauern. Den Prototypen mache ich mit 
Fädeldraht und 4€-Modulen.

Frank M. schrieb:
> Allerdings. Die tables.h und display.h funktionieren vorzüglich :-)

Habe ich was verpasst, oder war das ironisch? Da sind doch ein Haufen 
Fehler drin!

Eigentlich wollte ich das bis Mittwoch korrigieren, mache mich morgen 
früh dran.

von Herbert P. (herb3472)


Lesenswert?

Torsten C. schrieb:
> Frank M. schrieb:
>> Allerdings. Die tables.h und display.h funktionieren vorzüglich :-)
>
> Habe ich was verpasst, oder war das ironisch? Da sind doch ein Haufen
> Fehler drin!

Ich kann mir nur vorstellen, dass sich das Lob auf die Struktur bezieht. 
Die korrigierten Inhalte habe ich ja erst am 9.12. hochgeladen, die 
hatest Du am 8.12. noch gar nicht zur Verfügung.

Torsten C. schrieb:
> Eigentlich wollte ich das bis Mittwoch korrigieren, mache mich morgen
> früh dran.

Hoffentlich habe ich keine neuen Fehler eingebaut :-(

von Torsten C. (torsten_c) Benutzerseite


Angehängte Dateien:

Lesenswert?

Herbert P. schrieb:
> ... auf die Struktur bezieht ...

Auf den (noch) fehlerhaften Code, der sich nichtmal compilieren läßt, 
bezieht sicher kein Lob. Trotzdem danke. :-)

Ich habe jetzt geschaut, wie der korrigierte Code im CooCox-Projekt von 
ukw aussieht und werde den Code-Generator entsprechend korrigieren, so 
dass dass dann passen sollte.

Zu tbl_Words.png:

[text_show] dient datu, die Buchstaben-Matrix zu erzeugen. Der Text wird 
bei [length] abgeschnitten, also sind ._1, ._2 usw. kein Problem. 
Umlaute sind sogar nötig. Perfekt!

[text] könnte im DMU für die ListView verwendet werden, aber für die 
Code-Generierung nicht, da man mit "._1" keine Enumerator-Bezeichner 
machen kann. Ich habe die LEDs C-kompatibel umbenannt (siehe Bild).

Wozu braucht man [text-indexed]? Kann ich in den Kommentar packen.

Werden [abs_start_position] und [abs_snake_position] berechnet? Falls 
das Handarbeit ist, würde ich die Spalten lieber ignorieren und im 
Code-Generator (hoffentlich fehlerfrei) erzeugen.

Wenn wir ein stabiles Tabellenformat haben, können wir das für die 
16x16-Tabellen so übernehmen, damit der Code-Benerator nich verschiedene 
Spalten-Bezeichnungen unterstützen muss.

von Herbert P. (herb3472)


Lesenswert?

Torsten C. schrieb:
> [text] könnte im DMU für die ListView verwendet werden, aber für die
> Code-Generierung nicht, da man mit "._1" keine Enumerator-Bezeichner
> machen kann. Ich habe die LEDs C-kompatibel umbenannt (siehe Bild)

Hab ich in der db entsprechend geändert.

Torsten C. schrieb:
> Wozu braucht man [text-indexed]? Kann ich in den Kommentar packen.

dient nur mir zur leichteren Orientierung beim händischen Erstellen der 
tbl_hours und tbl_minutes (in einem String dürfen nur Indizes in 
aufsteigender Reihenfolge verwendet werden)

Torsten C. schrieb:
> Werden [abs_start_position] und [abs_snake_position] berechnet? Falls
> das Handarbeit ist, würde ich die Spalten lieber ignorieren und im
> Code-Generator (hoffentlich fehlerfrei) erzeugen.

Ist Handarbeit, besser im Code-Generator erzeugen!

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Hoffentlich habe ich keine neuen Fehler eingebaut

https://rawgit.com/TorstenC/1a59b9c73730eb8e144d/raw/WC24h_18x16_Test.html

Die Horror-Seite ist aktualisiert. Der CodeGen 0.7 hat immer noch 
Generator-Fehler. Ich habe aber nun wenigstens ein "WC24h_Test.cpp" zum 
testen mit
1
#include "display.h"
2
#include "tables.h"

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> Frank M. schrieb:
>> Vermutlich muss man da noch einen "Weißabgleich" machen, um die Dinger
>> wenigstens näher an einen Weißton zu bringen. Das heißt, eine
>> Korrekturtabelle muss her :-(
>
> Das war bei meiner Wohnzimmer-Lampe auch so, aber ich sehe das Problem
> nicht.

Nein, kein Problem, ich hatte nur ein wenig mehr erwartet. Bin halt zu 
verwöhnt ;-)

> Frank M. schrieb:
>> Ich bestelle mir mal eins. Portierung (andere Ports) sollte nicht
>> kompliziert sein.
>
> Das reicht auch um die noch billigeren China-Module zu programmieren.

Ja, aber die Nucleo-Boards gibts auch noch in ein paar Jahren. Das Board 
ist übrigens angekommen. Die Stifte dre Steckerleisten ragen zwar auch 
unten heraus, kann man aber mit der Zange abpitschen. Das ist eine Sache 
von wenigen Minuten. Den Controller zum Flashen und Debuggen kann man 
nachher im Endgerät wegen einer "Sollbruchstelle" in der Platine 
absägen/abbrechen, so dass nur noch eine Platine in Arduino-Größe 
übrigbleibt. Flashen kann man dann aber immer noch über einen 
Bootloader. Das Ding ist also hinreichend klein und genau Herberts 
Geschmack.

> Läuft Dein Linux auch da drauf?

Da läuft kein Linux, sondern MCURSES. Das ist lediglich eine 
Bibliothek, die auch unter Linux läuft. Ich benutze sie auch nur zum 
Debuggen/Monitoring. Im Endprodukt wirde sie wieder rausfallen, denn sie 
ist nur für die Entwicklung sinnvoll.

> Frank M. schrieb:
>> Allerdings. Die tables.h und display.h funktionieren vorzüglich :-)
>
> Habe ich was verpasst, oder war das ironisch? Da sind doch ein Haufen
> Fehler drin!

Nein, das war nicht ironisch, sondern ernst gemeint. Die Fehler 
resultieren aus den fehlerhaften DB-Tabellen-Inhalten. Dafür kannst Du 
ja nichts. Ich wollte damit ausdrücken, dass Dein "Übersetzungsprogramm" 
vorzüglich funktioniert. Dass es die Fehler 1:1 koopiert, liegt ja in 
der Natur der Sache.

> Eigentlich wollte ich das bis Mittwoch korrigieren, mache mich morgen
> früh dran.

Prima. Sobald sie verfügbar sind, übernehme ich sie in uclock.de und ins 
CooCox-Projekt.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> Die Horror-Seite ist aktualisiert.

Schön! Gibt es auch schon eine neue tables.h und display.h? Mir scheint, 
die Links im Artikel zeigen noch auf eine Version vom 9. Dezember...

Danke, Frank

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Frank M. schrieb:
> Sobald sie verfügbar sind, übernehme ich sie

Cool. :-) Hat höchste Prio neben meinem Beruf, ich kann aber nicht 
zaubern.

Neu ist (auch für mich zum debuggen):
1
enum MinuteMode {
2
    MM_1,         // 0 = Mode 1: "ES IST MM NACH"
3
    MM_2,         // 1 = Mode 2: "ES IST MM MINUTEN NACH"
4
    MM_3,         // 2 = Mode 3: "ES IST MM MINUTEN NACH (VIERTEL NACH, HALB, VIERTEL VOR) - OSSI"
5
    MM_4,         // 3 = Mode 4: "ES IST MM MINUTEN NACH (VIERTEL NACH, HALB, DREIVIERTEL) - OESI"
6
    MM_5,         // 4 = Mode 5: "ES IST MM MINUTEN NACH (VIERTEL, HALB, DREIVIERTEL) - RHEIN/ RUHR"
7
    MM_6,         // 5 = Mode 6: "ES IST MM MINUTEN NACH (VIERTEL NACH, HALB, DREIVIERTEL) - SCHWABEN"
8
    MM_10,        // 6 = Mode 10: "MM"
9
    MM_11,        // 7 = Mode 11: "UND MM MINUTEN"
10
    MM_12,        // 8 = Mode 12: "ES IST MM MINUTEN VOR"
11
    MM_7,         // 9 = Mode 7: "ES IST MM MINUTEN NACH (VIERTEL, HALB,DREIVIERTEL) - WESSI"
12
    MM_COUNT      // Number of MinuteModes
13
};
14
enum HourMode {
15
    HM_1,       // 0 = Mode 1: "HH (12) (ZWÖLF)"
16
    HM_2,       // 1 = Mode 2: "HH (12) - (MITTERNACHT, ZWÖLF)"
17
    HM_3,       // 2 = Mode 3: "HH UHR (12) (NULL UHR, ZWÖLF UHR)"
18
    HM_4,       // 3 = Mode 4: "HH UHR (12) NACHTS"
19
    HM_5,       // 4 = Mode 5: "HH UHR (24)"
20
    HM_6,       // 5 = Mode 6: "ES IST HH UHR (12)"
21
    HM_7,       // 6 = Mode 7: "ES IST HH UHR (24)"
22
    HM_24,      // 7 = Mode 24: "MITTERNACHT"
23
    HM_COUNT    // Number of HourModes
24
};

und
1
#define ModesCount 17               // deprecated
2
#define MODES_COUNT 17              // count of different display modes
3
#define MaxHourWordsPlusOne 7       // deprecated
4
#define MAX_HOUR_WORDSPLUS_ONE 7    // how many words for hour display (one plus for end token)
5
#define HourCount 25                // deprecated
6
#define HOUR_COUNT 25               // 24 plus one to distinguish between before and after full hour
7
#define MaxMinuteWordsPlusOne 8     // deprecated
8
#define MAX_MINUTE_WORDS_PLUS_ONE 8 // how many words for minute display (one plus for end token)
9
#define MinuteCount 60              // deprecated
10
#define MINUTE_COUNT 60
11
#define HourModesCount 8            // deprecated
12
#define HOUR_MODES_COUNT 8          // count of different display modes for hours
13
#define MinuteModesCount 11         // deprecated
14
#define MINUTE_MODES_COUNT 11       // count of different display modes for minutes

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Hi Torsten,

Torsten C. schrieb:

> Cool. :-) Hat höchste Prio neben meinem Beruf, ich kann aber nicht
> zaubern.

Ist ja logisch. Beruf geht immer vor.

> Neu ist (auch für mich zum debuggen):

Sieht gut aus! Die Änderungen gefallen mir!

Gruß, Frank

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Frank M. schrieb:
> Gibt es auch schon eine neue tables.h und display.h?

Noch nicht fehlerfrei. Soll ich Enums in den Arrays nutzen?
1
static const struct MinuteDisplay tbl_minutes[MINUTE_MODES_COUNT][MINUTE_COUNT]= {
2
    {                                                                                       // tbl_minutes[0] = Mode 1 ES IST MM NACH
3
        {0,{WP_ES, WP_IST}},                                                                //  0. Minute
4
        {0,{WP_ES, WP_IST, WP_EINS_1, WP_NACH_1}},                                          //  1. Minute
5
        {0,{WP_ES, WP_IST, WP_ZWEI_1, WP_NACH_1}},                                          //  2. Minute
6
        {0,{WP_ES, WP_IST, WP_DREI_1, WP_NACH_1}},                                          //  3. Minute
7
        // …
8
        {1,{WP_ES, WP_IST, WP_ZWEI_1, WP_MINUTEN_1, WP_VOR_1}},                             // 58. Minute
9
        {1,{WP_ES, WP_IST, WP_EINE_1, WP_MINUTE_1, WP_VOR_1}}                               // 59. Minute
10
    },
11
};

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Kompressionsmöglichkeit:
1
static const uint8_t tbl_minutes[MINUTE_MODES_COUNT][MINUTE_COUNT]= {
2
    {                                                                                       // tbl_minutes[0] = Mode 1 ES IST MM NACH
3
        {WP_ES, WP_IST},                                                                //  0. Minute
4
        {WP_ES, WP_IST, WP_EINS_1, WP_NACH_1},                                          //  1. Minute
5
        {WP_ES, WP_IST, WP_ZWEI_1, WP_NACH_1},                                          //  2. Minute
6
        {WP_ES, WP_IST, WP_DREI_1, WP_NACH_1},                                          //  3. Minute
7
        // …
8
        {0x80 + WP_ES, WP_IST, WP_ZWEI_1, WP_MINUTEN_1, WP_VOR_1},                      // 58. Minute
9
        {0x80 + WP_ES, WP_IST, WP_EINE_1, WP_MINUTE_1, WP_VOR_1}                        // 59. Minute
10
    },
11
};

Komprimieren oder nicht komprimieren?

Also statt "uint8_t hourOffset" einfach ein Bit im ersten Index setzen?

: Bearbeitet durch User
von Hans H. (Gast)


Lesenswert?

Enums nutzen, gerne.
HourOffset als Bit verwursten -> nein

mfg.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Hans H. schrieb:
> HourOffset als Bit verwursten -> nein

Hast Du was gegen Wurst? ;-)

OK. Mache ich so, wie im ersten Beispiel.

Hans H. schrieb:
> Enums nutzen, gerne.

Das "enum WordPos" zieht dann also um:

… von display.h nach tables.h.

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> Ich muss … heute Abend ja in die "Euse"˄˄.

Am 10.10.2014 war ein Treffen. Allerdings war alles noch nicht sehr 
konkret. Ich bleibe dran, siehe auch:

Beitrag "FabLab Braunschweig"

: Bearbeitet durch User
von Charly B. (charly)


Lesenswert?

Hi, richtig action hier ;)

moechte mir auch so eine Uhr bauen, aber mit ein Paar eigenen Ideen

1. ich mache eine Platine die wahlweise WS2812 RGB oder mono LEDs
in 0805 mit 74hc595 angesteuert werde, 18 Leds pro Streifen mit
20mm abstand, streifenbreite ca 13mm, laenge 372mm

2. ansteuerung mit Ardunino Mini mit ATMEGA 328, natuerlich DCF,
IR aber auch ein RTC damit die Uhr nach stromausfall sofort
funktioniert


falls noch jemand interesse hat kann ich LED Platinen mitbestellen
die Platine f. den Arduino ist noch nicht fertig, falls noch Ideen
vorhanden sind kann man sie ja mit einfliessen lassen


vlG
Charly

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Charly B. schrieb:
> mit 74hc595 angesteuert

Bist Du wirklich sicher, dass Du 74hc595 nehmen willst? Für LEDs gibt es 
auch Schieberegister-Treiber, die Konstantstrom trotz unterschiedlicher 
LED-Vorwärtsspannungen können.

Das spart Lötarbeit für LED-Vorwiderstände und die LEDs brennen auch bei 
Alterungs-Effekten weitgehend gleich hell.

: Bearbeitet durch User
von Charly B. (charly)


Lesenswert?

Hi Torsten,

ich habs jetzt im ersten step mit dem 74hc595 gemacht, ist halt
an jeder Strassenecke zu bekommen und war auch nur als 'zugabe'
gedacht falls man ein 'mono' strip aufbauen will, ich werde mir
RGB Strips aufbauen, da kann man so schoen mit den Farben spielen ;)

Ich hab vor vielen Jahren schon LEDs mit dem 595 angesteuert und
die funktionieren immer noch 'wie am ersten Tag' ;)
In der 'mono' version sind ja nur 18 Leds mit Vorwiederstand
und die 595 mit 100nf zu bestuecken, also ueberschaubar (denk i)
Wenn spaeter was anderes gewuenscht wird kann man es immer
noch aendern, oder hast du jetzt konkret einen aenderungswunsch
dann schreib mir bitte und i sehe was sich machen laesst

vlG
Charly

von Herbert P. (herb3472)


Lesenswert?

Charly B. schrieb:
> ich habs jetzt im ersten step mit dem 74hc595 gemacht, ist halt
> an jeder Strassenecke zu bekommen und war auch nur als 'zugabe'
> gedacht falls man ein 'mono' strip aufbauen will, ich werde mir
> RGB Strips aufbauen, da kann man so schoen mit den Farben spielen ;)

Hallo Charly,

willkommen hier, aber:

wenn schon große Platine für monochrome 18x16 Matrix, dann bitte für 
diskrete LEDs mit einem Abstand von B16,67mm x H18,75mm. Ich hab ohnehin 
nach mehreren Vorentwürfen 4 Frontplattendesigns mit Produktionsvorlagen 
gemacht und finde, das muss für's erste einmal reichen.

Und bitte nicht mit 74HC595, sondern mit TLC5940. Der ist speztiell für 
diese Zwecke konzipiert, hat PWM und Konstantstromquelle mit 
Helligkeitsausgleich für 16 Kanäle eingebaut und ist per Daisy Chain 
kaskadierbar. Ist in China (Alibaba, Aliexpress) für ein Butterbrot und 
ein Ei zu haben, Lieferzeit 1 Woche bis 14 Tage.

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

Charly B. schrieb:
> 2. ansteuerung mit Ardunino Mini mit ATMEGA 328, natuerlich DCF,
> IR aber auch ein RTC damit die Uhr nach stromausfall sofort
> funktioniert

@Frank & Torsten:

weiß man schon, wieviel Speicher ca. benötigt wird? Kann sich das mit 
einem ATmega328 ausgehen?

von Herbert P. (herb3472)


Lesenswert?

Torsten C. schrieb:
> Torsten C. schrieb:
>> Ich muss … heute Abend ja in die "Euse"˄˄.
>
> Am 10.10.2014 war ein Treffen. Allerdings war alles noch nicht sehr
> konkret. Ich bleibe dran, siehe auch:
>
> Beitrag "FabLab Braunschweig"

@ Joachim:

wie siehts eigentlich in Berlin mit dem Fab_Lab aus? Dort müsstest Du 
doch die Stahlfrontplatten um ein Spottgeld fräsen können, oder?

Gibts hier vielleicht auch noch andere, die Zugang zu einem Fab_Lab 
haben bzw. in deren Nähe sich eines befindet?

von Joachim B. (jar)


Lesenswert?

Herbert P. schrieb:
> wie siehts eigentlich in Berlin mit dem Fab_Lab aus? Dort müsstest Du
> doch die Stahlfrontplatten um ein Spottgeld fräsen können, oder?

werde ich mich kümmern sobald ich Zeit dazu habe

aber was ist mit den 4 LED Statuspunkten?

so wie die da rumliegen gefällts mir noch nicht

ich dachte an

I für IR Qittungs LED blinkt kurz 200ms auf bei IR Erkennung (rot? aber 
ist ja wählbar)

D für DCF77 Status LED blinkt im Sekundentakt 200ms/800ms oder statisch 
in Orange bei sync

N für NTP Status LED blau bei sync

welcher Buchstabe bietet sich für die vierte an?

und wo sietzt der IR und der Helligkeitssensor, der muss ja irgendwie 
auf der Front untergebracht werden, notfalls in einem nicht benitzten 
Buchstaben der aber optimal kein Licht IR und Umgebung behindert.

von Herbert P. (herb3472)


Lesenswert?

Joachim B. schrieb:
> aber was ist mit den 4 LED Statuspunkten?
>
> so wie die da rumliegen gefällts mir noch nicht

Ich gebe Dir recht, das müssen wir noch ausdiskutieren.

Joachim B. schrieb:
> und wo sietzt der IR und der Helligkeitssensor, der muss ja irgendwie
> auf der Front untergebracht werden, notfalls in einem nicht benitzten
> Buchstaben der aber optimal kein Licht IR und Umgebung behindert.

Ich denke mir, den IR-Sensor könnte man in der Mitte unter- oder 
oberhalb der Matrix plazieren, da er ja nicht durch die Diffusor-Schicht 
abgedeckt werden sollte. Den Helligkeitssensor könnte man meines 
Erachtens hinter einem unbenutzten Buchstaben verstecken. Da die 
Helligkeitsregelung nicht auf die IR-Impulse der Fernsteuerung oder 
andere kurzzeitige Helligkeitsschwankungen reagieren soll, muss man da 
wohl eine Integratorstufe einbauen (am Einfachsten wohl ein RC-Glied).

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> weiß man schon, wieviel Speicher ca. benötigt wird?

Wenn ich mich nicht verrechnet habe:
1
// Von-Neumann-Variant, Data from WC24h_18x16_V2_2010_1825_9_Dez_2014 CodeGen v0.7
2
// tbl_modes[MODES_COUNT]: 1054 bytes
3
// tbl_hours[HOUR_MODES_COUNT][HOUR_COUNT][MAX_HOUR_WORDSPLUS_ONE]: 1200 bytes
4
// tbl_minutes[MINUTE_MODES_COUNT][MINUTE_COUNT]: 4800 bytes
5
// total (tbl_minutes + tbl_hours + tbl_modes: 7054 bytes

von Herbert P. (herb3472)


Lesenswert?

Torsten C. schrieb:
> // total (tbl_minutes + tbl_hours + tbl_modes: 7054 bytes

Das ist ja mininmal **freu** :-)

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Ich denke mir, den IR-Sensor könnte man in der Mitte unter- oder
> oberhalb der Matrix plazieren, da er ja nicht durch die Diffusor-Schicht
> abgedeckt werden sollte. Den Helligkeitssensor könnte man meines
> Erachtens hinter einem unbenutzten Buchstaben verstecken.

Man kann beide (IR-Empfänger als auch LDR) jeweils hinter einem 
unbenutzten Buchstaben verstecken. IR geht auch durch die 
Diffusor-Schicht. Das wird auch im Word Clock-Projekt so erfolgreich 
umgesetzt.

> Da die
> Helligkeitsregelung nicht auf die IR-Impulse der Fernsteuerung oder
> andere kurzzeitige Helligkeitsschwankungen reagieren soll, muss man da
> wohl eine Integratorstufe einbauen (am Einfachsten wohl ein RC-Glied).

Nein, es reicht LDR + R als Spannungsteiler. Den Integrator macht man 
selbstverständlich in Software (zb. durch Mittelwertwertsberechnung der 
letzten x Sekunden). Läuft auch genau so im Word Clock-Projekt.

: Bearbeitet durch Moderator
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Frank M. schrieb:
> Integrator macht man selbstverständlich in Software

Ich dachte, man macht das selbstvertändlich so wie hier:

http://www.ersinelektronik.com/class/INNOVAEditor/assets/Datasheets/TSOP2236.pdf

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

Frank M. schrieb:
> Nein, es reicht LDR + R als Spannungsteiler. Den Integrator macht man
> selbstverständlich in Software

Logisch. Ich verfall' immer wieder in meine Hardware-Geschichten, alte 
Gewohnheit ;-)

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> Frank M. schrieb:
>> Integrator macht man selbstverständlich in Software
>
> Ich dachte, man macht das selbstvertändlich so wie hier:
>
> http://www.ersinelektronik.com/class/INNOVAEditor/assets/Datasheets/TSOP2236.pdf

Torsten ich bitte Dich, die Postings SORGFÄLTIGER zu lesen!

Beim Integrator ging es um die Messung der Umgebungshelligkeit mit 
einem LDR! Wie willst Du denn mit einem TSOP die Umgebungshelligkeit 
messen?!?

Beim IR-Empfang nimmt man selbstverständlich einen TSOP. Solche 
Belehrungen kannst Du Dir sparen, ich bin der Autor von IRMP!

Und wenn Du mal in den WordClock24h-Artikel reinschauen würdest, 
dann siehst Du auf dem Foto und im Text neben den WS2812-Streifen einen 
TSOP38238.

Link:

  http://www.mikrocontroller.net/articles/WordClock24h#Hardware

: Bearbeitet durch Moderator
von Joachim B. (jar)


Lesenswert?

Frank M. schrieb:
> Torsten ich bitte Dich, die Postings SORGFÄLTIGER zu lesen!

ach das wird schon

> Beim Integrator ging es um die Messung der Umgebungshelligkeit mit
> einem LDR! Wie willst Du denn mit einem TSOP die Umgebungshelligkeit
> messen?!?
>
> Beim IR-Empfang nimmt man selbstverständlich einen TSOP. Solche
> Belehrungen kannst Du Dir sparen, ich bin der Autor von IRMP!

ich hatte dich sofort verstanden weil ich ja schon was ähnliches 
aufgebaut hatte, am sorgfältiger lesen muss ich auch noch üben ;-)

also
I für IR
D für DCF77
N für NTP ist OK?


was nehmen wir für die 4te LED ?

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Frank M. schrieb:
> ich bitte Dich, die Postings SORGFÄLTIGER zu lesen!

Ach, jetzt verstehe ichs auch. Klappt halt nicht immer. Sorry.

Frank M. schrieb:
> Solche Belehrungen kannst Du Dir sparen

Das war keine Belegrung. Hätte man so interpretieren können, sorry.

Frank M. schrieb:
> Messung der Umgebungshelligkeit

Was ist mit dem Ambient-Light-Sensor? ^^

Billig, universell, kann auch auf Änderungen der Farbtemperatur 
(Kerzenlicht, Kunstlicht, Tageslicht, ...) reagieren.

https://www.sparkfun.com/products/12055

PS: Als Breakout natürlich etwas teurer.

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> Was ist mit dem Ambient-Light-Sensor? ^^
>
> Billig, universell, kann auch auf Änderungen der Farbtemperatur
> (Kerzenlicht, Kunstlicht, Tageslicht, ...) reagieren.

Ich machs erstmal mit einem LDR. Im Word Clock-Projekt wird der "LDR 
07" von Reichelt eingesetzt - kostet 90 Cent und funktioniert prima. 
Ausserdem habe ich von den Dingern noch ein paar rumliegen. Den 
Ambient-Light-Sensor kann man ja immer noch später dazunehmen, wenn man 
möchte.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Joachim B. schrieb:
> ich hatte dich sofort verstanden weil ich ja schon was ähnliches
> aufgebaut hatte, am sorgfältiger lesen muss ich auch noch üben ;-)

Du warst ja nicht gemeint ;-)

> also
> I für IR
> D für DCF77
> N für NTP ist OK?

Meinetwegen. Mir ist das eigentlich schnuppe. Von mir aus können das 
auch 4 Kreise sein.

> was nehmen wir für die 4te LED ?

Bis uns noch ein Feature einfällt vielleicht G für "General".

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Frank M. schrieb:
> Von mir aus können das auch 4 Kreise sein.

Die nicht leuchtenden LEDs sollen ja nach "Buchstabensalat" ausnehmen. 
Also lieber bis auf Weiteres "I/D/N/G".

Frank M. schrieb:
> Du warst ja nicht gemeint ;-)

Ist denn wieder alles gut? Hatte in der Hektik eben echt falsch gelesen!

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

Torsten C. schrieb:
> Also lieber bis auf Weiteres "I/D/N/G"

Ist registriert, aber ich denke, ich warte noch ein wenig, bis ich die 
Buchstaben in's Layout einbaue - so eilig haben wir's ja nicht, und 
vielleicht wird ja Alles doch noch einmal ein wenig anders ;-)

von Herbert P. (herb3472)


Lesenswert?

Torsten C. schrieb:
> Also lieber bis auf Weiteres "I/D/N/G"

Ist registriert, aber ich denke, ich warte noch ein wenig, bis ich die 
Buchstaben in's Layout einbaue - so eilig haben wir's ja nicht, und 
vielleicht wird ja Alles doch noch einmal ein wenig anders ;-)

Wann gibt's denn eigentlich ein Mockup mit den neuen Tabellen? (Hat von 
mir aus keine Eile, hab ohnehin im Augenblick Vorweihnachts-Stress)

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Wann gibt's denn eigentlich ein Mockup mit den neuen Tabellen?

Wenn alles auf ENUMs umgestellt ist, dann kann man auch besser prüfen, 
ob keine Fehler drin sind. Wenn alles glatt geht, heute Abend.

Die Matrix sieht aktuell so aus (noch mit LED-Punkten):
1
// Mock-up arrays for 24h Wordclock, see http://www.mikrocontroller.net/articles/WordClock24h
2
// Von-Neumann-Variant, Data from WC24h_18x16_V2_2010_1825_9_Dez_2014, CodeGen v0.7
3
// ...
4
static const char* display[1][WC_ROWS]= {{
5
    "ES#IST#VIERTELEINS",
6
    "DREINERSECHSIEBEN#",
7
    "ELFÜNFNEUNVIERACHT",
8
    "NULLZWEI#ZWÖLFZEHN",
9
    "UND#ZWANZIGVIERZIG",
10
    "DREISSIGFÜNFZIGUHR",
11
    "MINUTEN#VORBISNACH",
12
    "UNDHALBDREIVIERTEL",
13
    "SIEBENEUNULLZWEINE",
14
    "FÜNFSECHSACHTVIER#",
15
    "DREINSUND#ELF#ZEHN",
16
    "ZWANZIG###DREISSIG",
17
    "VIERZIGZWÖLFÜNFZIG",
18
    "MINUTENUHR#FRÜHVOR",
19
    "ABENDSMITTERNACHTS",
20
    "MORGENS....MITTAGS"
21
}};

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

1
#define MAX_HOUR_WORDS_PLUS_ONE 6   // how many words for hour display (one plus for end token)

Wozu brauchen wir den End-Token? Der braucht doch nur unnötig Platz!

Ich lasse ihn erstmal drin, würde ihn aber gern rausschmeißen.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> #define MAX_HOUR_WORDS_PLUS_ONE 6   // how many words for hour display
> (one plus for end token)
> Wozu brauchen wir den End-Token? Der braucht doch nur unnötig Platz!

Entweder Du hast ein End-Token oder Du nimmst eine Längeninformation. 
Beides kostet ein Byte. Ist also gehopst wie gesprungen. Längen-Info 
wäre auch nicht schlecht, denn ich habe lieber Indices, die mit 0 statt 
1 beginnen. Im Moment muss ich immer die 1 wieder von den Werten 
abziehen.

Aber okay, das ist Kosmetik.

von Herbert P. (herb3472)


Lesenswert?

Frank M. schrieb:
> Längen-Info
> wäre auch nicht schlecht, denn ich habe lieber Indices, die mit 0 statt
> 1 beginnen.

Dafür wäre eigentlich die Längen-Info in der tbl_hours und tbl_minutes 
gedacht gewesen.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Frank M. schrieb:
> Im Moment muss ich immer die 1 wieder von den Werten
> abziehen.

Das meinte ich z.B. mit dem Fehler im CodeGen (wenn wir vom Gleichen 
reden). In den Arrays sollte der Index schon korrekt drin stehen.

Frank M. schrieb:
> Entweder Du hast ein End-Token oder Du nimmst eine Längeninformation.

Den End-Token braucht man ja nur, wenn durch die Länge die 
"MAX_HOUR_WORDS" nicht voll ausgenutzt wird, und da verbraucht der Token 
keinen Platz.

Meine Frage bezog sich auf das "…_PLUS_ONE". Das ist m. E. hyperliquid.

Wenn ich mich nicht verrechnet habe, benötigt "WP_DUMMY = 0" weniger 
Speicher-Overhead als die beiden "…_PLUS_ONE".

"WP_DUMMY = 0" hat auch noch den Vorteil, dass man den HourOffset 
optional mit einem Bit "verwursten" könnte .
1
{0x80 + WP_ES, WP_IST, WP_EINE_1, //...

Ich bin da flexibel. Ich könnte auch immer alle Varianten erzeugen:

* tables_large_Len_Neumann.h
* tables_large_Token_Neumann.h
* tables_medium_Neumann.h
* tables_small_Neumann.h
* tables_large_Len_Havard.h
* tables_large_Token_Havard.h
* tables_medium_Havard.h
* tables_small_Havard.h

Herbert P. schrieb:
> Das ist ja mininmal **freu**

Sorry, ich habe illumination[1][WpCount] vergessen, dafür wird 
tbl_modes[MODES_COUNT] etwas kleiner.

Die illumination[1][WpCount] wird es sinnvoller Weise wohl auch in 
verschiedenen Varianten (snake_position, abs_position, ...) geben, oder?

in display.h ist ja noch das
1
char* display[1][WC_ROWS]= {{ //...
drin. Das wird aber nur für die Simulation oder den screen-saver 
gebraucht.

Die "enum WordPos {…" zieht ja um nach "tables.h". Soll die "struct 
WordIllu illumination[1][WpCount]" auch in die "tables.h" umziehen? Dann 
bräuchte man für den µC nur die "tables.h" und die "display.h" wäre nur 
für die Simulationen und den screen-saver.

Mir ist das egal. Ist nur ein Vorschlag, um Euch ggf. die Arbeit zu 
erleichtern, also den AutoCode nicht noch nachbearbeiten zu müssen.

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> Meine Frage bezog sich auf das "…_PLUS_ONE". Das ist m. E. hyperliquid.

Nein, ist es nicht. Du brauchst die abschließende 0. Ist Dir schon 
aufgefallen, dass die Zahlen in z.B. tbl_hours alle größer 0 sind? Das 
liegt daran, dass hier ab 1 statt 0 gezählt wird. Alle nicht in der 
Tabelle angegebenen Zahlen sind bei statics automatisch 0. Und diese 0 
brauchst Du jeweils am Ende. Wenn Du das Array eins kleiner machst, also 
ohne PLUS_ONE, krachts at runtime, weil dann die abschließende 0 nicht 
mehr gefunden wird.

> Die illumination[1][WpCount] wird es sinnvoller Weise wohl auch in
> verschiedenen Varianten (snake_position, abs_position, ...) geben, oder?

Das halte ich für allergrößten Unsinn. Die Snake-Position habe ich im 
STM32F4-Disco-Code folgendermaßen gelöst:
1
    if (y & 0x01)                                       // odd row: count from right to left
2
    {
3
        n = y * DisplayX + (DisplayX - x);
4
    }
5
    else                                                // even row: count from left to right
6
    {
7
        n = y * DisplayX + x;
8
    }

Dafür braucht es bestimmt keine extra-Tabelle - ausser für 
minderbemittelte Programmierer.

: Bearbeitet durch Moderator
von Joachim B. (jar)


Lesenswert?

Frank M. schrieb:
> Dafür braucht es bestimmt keine extra-Tabelle - ausser für
> minderbemittelte Programmierer.

melde mich, worum gehts?

ob nun Index Zähler oder "END" am Ende ist mir Conchita

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Joachim B. schrieb:
> melde mich, worum gehts?

Um das hier:

 1  2  3  4  ...                              18
 O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O---
                                                 |
 36                                       20  19 |
 O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O---
 |
 |
 O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--
 37 38 ....

Also die Ermittlung der Position eines jeden Buchstabens. In jeder 2. 
Zeile gehts von rechts nach links. Das meinte Torsten eben mit 
"Snake-Position". Um diese zu ermitteln, braucht man aber nicht extra 
wieder eine neue Tabelle, denn man kann sie mit dem obigen Code 
ausrechnen.

> ob nun Index Zähler oder "END" am Ende ist mir Conchita

Mir auch. Es läuft ja bereits mit der 0 als Ende-Zeichen. Warum soll man 
das wieder ummodeln?

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Frank M. schrieb:
> Es läuft ja bereits mit der 0 als Ende-Zeichen. Warum soll man
> das wieder ummodeln?

Man könnte es ummodeln, um ein paar Bytes zu sparen. Mir persönlich ist 
es auch "Conchita". Ich frage ja nur, was Ihr wollt!

Herbert P. schrieb:
> Torsten C. schrieb:
>> Werden [abs_start_position] und [abs_snake_position] berechnet?
> Ist Handarbeit, besser im Code-Generator erzeugen!

Also gar nicht erzeugen, weil wir ja keine "minderbemittelten 
Programmierer" sind. OK. Haken dran?

Frank M. schrieb:
> Wenn Du das Array eins kleiner machst, also
> ohne PLUS_ONE, krachts at runtime, weil dann die abschließende 0 nicht
> mehr gefunden wird.

Ich will jetzt nicht behaupten, dass die abschließende 0 nur von 
"minderbemittelten Programmierern" gebraucht wird. Den Tonfall halte ich 
hier nämlich für unangebracht.

Wenn Du nicht nur auf
1
( tbl_minutes[MINUTE_MODES_COUNT][MINUTE_COUNT].wordIdx[i] == 0 )
sondern auch auf
1
( i <= MAX_MINUTE_WORDS )
abfragst, kracht da at runtime nix.

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> Also gar nicht erzeugen, weil wir ja keine "minderbemittelten
> Programmierer" sind. OK. Haken dran?

Jup :-)

> Ich will jetzt nicht behaupten, dass die abschließende 0 nur von
> "minderbemittelten Programmierern" gebraucht wird. Den Tonfall halte ich
> hier nämlich für unangebracht.

Die Formulierung bezog sich rein auf eine extra-Tabelle für die 
Snake-Position. Bitte nicht durcheinanderbringen :-)

> Wenn Du nicht nur auf
>
1
( tbl_minutes[MINUTE_MODES_COUNT][MINUTE_COUNT].wordIdx[i] == 0 )
> sondern auch auf
>
1
( i <= MAX_MINUTE_WORDS )
> abfragst, kracht da at runtime nix.

Damit hast Du vollkommen recht. Okay. Dann hau die PLUS_ONE wech.

von Joachim B. (jar)


Lesenswert?

Joachim B. schrieb:
> ausser für
>> minderbemittelte Programmierer.
>
> melde mich, worum gehts?

Frank M. schrieb:
> Joachim B. schrieb:
>> melde mich, worum gehts?
>
> Um das hier:

du hast meinen Scherz nicht verstanden, war keine Meldung weil:

Frank M. schrieb:
> Es läuft ja bereits mit der 0 als Ende-Zeichen. Warum soll man
> das wieder ummodeln?

eben.

Torsten C. schrieb:
> weil wir ja keine "minderbemittelten
> Programmierer" sind.

och ich kann das akzeptieren, meine Stärken liegen eher in Hardware, SW 
nur so weit wie es funktioniert und nicht annähernd genial ist, dazu 
sind mir auch überdimensionierte Speicher und Prozzi recht.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Neue STM32F4-Disco-Version 0.4 ist online im Artikel WordClock24h.

Damit werden die LEDs sanft zur nächsten Uhrzeit übergeblendet.

Während also die LEDs, die ausgehen müssen, langsam immer dunkler 
werden, werden die neuen LEDs zeitgleich immer heller. Das ganze 
passiert in einer Viertelsekunde. Ich halte das bei der (relativ 
schlechten) Auflösung der WS2812 für die beste Überblendzeit. Ich habe 
da mehrere durchprobiert....

: Bearbeitet durch Moderator
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Unter
http://www.mikrocontroller.net/articles/WordClock24h#Verifikation.2C_Validierung.2C_Code-Generator
steht:
> tables.h  (Von-Neumann) bei GitHub (Ziel speichern unter…)
> display.h (Von-Neumann) bei GitHub (Ziel speichern unter…)

Da ist jetzt die Version:
1
// Von-Neumann-Variant, Data from WC24h_18x16_V2_2010_1825_9_Dez_2014 CodeGen v0.08
2
// total (tbl_minutes + tbl_hours + tbl_modes + illumination): 7014 bytes

Wegen der Aufteilung display.h <-> tables.h: Wie soll's nun sein?

uint16_t brauchen wir nicht. OK?

Der VisualStudio C++ Compiler hat nicht gemeckert bei:
1
#include "stdafx.h"
2
#define uint8_t unsigned char
3
#include "display.h"
4
#include "tables.h"
5
int main(array<System::String ^> ^args)
6
{
7
    return 0;
8
}

Wieviel Bytes braucht ein "const char* description"?

Zu den 7014 bytes: Ich bin von 3 Bytes (24-Bit Adresspointer) + ein Byte 
pro Zeichen und einer terminierenden 0 ausgegangen.

VG Torsten C. ➜ Für Neu-Eisteiger gibt es den
Beitrag "WortUhr/WordClock: Minutengenau, 24h, RGB – Für Neu-Einsteiger"

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

@Torsten & Frank

Super habt Ihr das hinbekommen! Leider hab ich bei meinen Tabellen schon 
wieder ein paar Fehler entdeckt:

teilweise "SECH" statt "SECHS" und "SIEB" statt "SIEBEN" bzw. auch 
umgekehrt;

"MINUTE" statt "MINUTEN"

aber sonst wirkt die Zeitanzeige auf mich weitgehend "aufgeräumt" und 
praktikabel.

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> Unter
> 
http://www.mikrocontroller.net/articles/WordClock24h#Verifikation.2C_Validierung.2C_Code-Generator
> steht:
>> tables.h  (Von-Neumann) bei GitHub (Ziel speichern unter…)
>> display.h (Von-Neumann) bei GitHub (Ziel speichern unter…)

Prima, danke. Ich habe direkt beides in die STM32-Version integriert, 
sämtliche deprecated-Konstanten ersetzt und die zusätzlichen 
Abbruchbedingungen wegen des fehlenden PlusOne eingebaut.

Die Anzeige sieht nun ziemlich "murksig" aus. "ES" leuchtet zwar, "IST" 
aber schon nicht mehr. Es werden zwar immer vollständige Wörter 
angezeigt, aber immer die falschen. Irgendwas musst Du zusätzlich an der 
Logik geändert haben... Hast Du da einen Tipp für mich?

> Wieviel Bytes braucht ein "const char* description"?

Kommt auf den µC an, wie groß ein Pointer ist.

: Bearbeitet durch Moderator
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Frank M. schrieb:
> Die Anzeige sieht nun ziemlich "murksig" aus. "ES" leuchtet zwar, "IST"
> aber schon nicht mehr.

Hast Du da noch die +1 drin? Die Indizes sollten nun direkt passen.

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> Frank M. schrieb:
>> Die Anzeige sieht nun ziemlich "murksig" aus. "ES" leuchtet zwar, "IST"
>> aber schon nicht mehr.
>
> Hast Du da noch die +1 drin? Die Indizes sollten nun direkt passen.

Ja, habs gefunden, es liegt an WP_DUMMY in display.c. Da ich mit Indices 
beginnend mit 0 zähle, muss ich jetzt (nachdem ich immer 1 abgezogen 
habe), in der display-Routine wieder eins draufzählen ;-)

Macht insgesamt +/- 0. Ich habe nun das -1 rausgeworfen und zusätzlich 
das spätere +1. Dann passt es wieder.

Es läuft jetzt, ich mache gleich ein Update der STM32-Version, welche 
die LEDs sanft überblendet. Ausserdem aktualisiere ich dann auch 
uclock.de.

Melde mich gleich wieder.

: Bearbeitet durch Moderator
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Leider hab ich bei meinen Tabellen schon wieder ein paar Fehler entdeckt

Also ich hab's mir bequem gemacht: .accdb per Drag&Drop auf das C#-DMU 
ziehen, Knopf "Code Generieren" drücken, dann auf "tables.h" drücken, 
dann geht automatisch ein neuer Tab im Browser auf mit dem Gist im 
Edit-Mode und der Code ist in der Zwischenablage. Dann nur Strg-A, 
Strg-V und "save" drücken. Das gleiche dann nochmal mit display.h und 
der Horror-Seite. Fertig!

Also von mir aus drei Updates pro Tag. ;-)

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

Die accdb- und mdb-Tabellen sind korrigiert und hochgeladen.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> Also von mir aus drei Updates pro Tag. ;-)

Prima! Hoffentlich kommt es nicht dazu, ich habe nämlich eben schon beim 
Testen einiges an "Fehlern" in Herberts Tabellen gesehen. Ich poste 
gleich eine Liste ;-)

Neue STM32-Version 0.4.1 ist hochgeladen, wir sind nun wieder "synchron" 
;-)

http://uclock.de läuft nun auch mit den neuen tables.h und display.h.

Danke!

von Herbert P. (herb3472)


Lesenswert?

Muss jetzt Schluss machen, gute N8!

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Die accdb- und mdb-Tabellen sind korrigiert und hochgeladen.
1
// Von-Neumann-Variant, Data from WC24h_18x16_V2_2010_2003_15_Dez_2014 CodeGen v0.08
2
// total (tbl_minutes + tbl_hours + tbl_modes + illumination): 7014 bytes

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Hi Herbert,

Herbert P. schrieb:
> Leider hab ich bei meinen Tabellen schon
> wieder ein paar Fehler entdeckt:

Macht nix. Änderungen gehen nun fix dank Torstens Codegenerator :-)

Erstmal danke für Deinen unermüdlichen Einsatz!

Was mir eben bei den ersten Tests aufgefallen ist:

Ossi Mode 6 und 7:

http://uclock.de/?x=7&h=21&m=15

  Falsch:  Es ist fünf zehn minuten nach neun uhr
  Richtig: Es ist dreiviertel zehn

http://uclock.de/?x=7&h=21&m=45

  Falsch:  Es ist fünf und vierzig nach neun uhr
  Richtig: Es ist viertel zehn

http://uclock.de/?x=7&h=21&m=20

  Falsch:  Es ist fünf zwanzig nach neun uhr
  Richtig: Es ist zehn vor halb zehn

Hier nochmal die Systematik in Worten:

Die Formulierung "zwanzig nach/vor" gilt nur für Rhein-Ruhr und 
Schwaben, bei Ossis/Wessis gilt: "zehn vor halb" und "zehn nach halb".

Die Formulierung "viertel neun" bzw. "dreiviertel neun" gilt dagegen für 
Schwaben und Ossis. Bei Wessis und Rheinländern heisst es "viertel nach" 
und "viertel vor".

Schwaben-Modus (und auch fast jeder andere):

http://uclock.de/?x=12&h=21&m=15

  Falsch:  Es ist viertel zehn uhr
  Richtig: Es ist viertel zehn

Das abschließende "Uhr" sagt man nur bei ganzen Uhrzeiten, also z.B.

  Es ist drei uhr
  Es ist acht uhr

Sobald man aber "x minuten vor .. " oder "x minuten nach .." sagt, lässt 
man das abschließende "uhr" weg.

Kein Mensch sagt: "Es ist zwanzig nach zwölf uhr", sondern "Es ist 
zwanzig nach zwölf".

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Torsten C. schrieb:
>
1
// Von-Neumann-Variant, Data from 
2
> WC24h_18x16_V2_2010_2003_15_Dez_2014 CodeGen v0.08

Vielleicht solltest Du noch die aktuelle Uhrzeit mit hinzunehmen ;-)

Leider ist da ein Fehler:
1
display.h:39:1: error: redeclaration of enumerator 'WP_DUMMY'
2
display.h:35:1: note: previous definition of 'WP_DUMMY' was here
3
display.h:40:1: error: redeclaration of enumerator 'WP_DUMMY'
4
display.h:39:1: note: previous definition of 'WP_DUMMY' was here

Liegt an Mehrfachverwendung von WP_DUMMY:
1
enum WordPos {
2
WP_DUMMY, // 0 = "0_DUMMY" = ""
3
WP_ES, // 1 = "1_ES" = "ES"
4
WP_IST, // 2 = "2_IST" = "IST"
5
WP_VIERTEL_1, // 3 = "3_VIERTEL" = "VIERTEL"
6
WP_DUMMY, // 4 = "4_DUMMY" = ""
7
WP_DUMMY, // 5 = "5_DUMMY" = ""

Besser:
1
enum WordPos {
2
WP_DUMMY, // 0 = "0_DUMMY" = ""
3
WP_ES, // 1 = "1_ES" = "ES"
4
WP_IST, // 2 = "2_IST" = "IST"
5
WP_VIERTEL_1, // 3 = "3_VIERTEL" = "VIERTEL"
6
WP_DUMMY_4, // 4 = "4_DUMMY" = ""
7
WP_DUMMY_5, // 5 = "5_DUMMY" = ""

Habe es so mal korrigiert und http://uclock.de/ aktualisiert.

von Joachim B. (jar)


Lesenswert?

Frank M. schrieb:
> "dreiviertel neun" gilt dagegen für
> Schwaben und Ossis.

Einspruch immer noch!
Gilt auch in WB

von Hans H. (loetkolben)


Lesenswert?

Hallo Torsten, Frank und all die anderen ;-)

Habe eben auch tables.h und display.h von Rawgit geholt, und in den 
Screensaver eingepflegt mit allen Änderungen die im Thread oben 
besprochen wurden.

Danke dir Torsten für Deine Arbeit. Ich gehe mit den Änderungen mit ;-)

Leider noch zwei kleine Fehler:
1
static const struct Modes tbl_modes[MODES_COUNT] = {
2
    {  6,  5, L"ES IST HH UHR MM (12)" },
3
    {  6,  9, L"ES IST HH UHR MM (24)" },
4
           ^ hier muß 6 stehen
5
    {  7,  5, L"ES IST HH UHR UND MM MINUTEN (12)" },
6
    {  7,  9, L"ES IST HH UHR UND MM MINUTEN (24)" },
7
           ^ hier auch
8
...

Eine Bitte Torsten es wäre super wenn Du in der nächsten Version alle 
von Dir als deprecated markierten #defines entfernen kannst.

Ich mach das jetzt so
1
// our typed constants from the "C" #defines
2
static const int DisplayX= WC_COLUMNS;
3
static const int DisplayY= WC_ROWS;
4
5
static const int ModesCount= MODES_COUNT;         // count of different display modes
6
static const int MaxHourWords= MAX_HOUR_WORDS;  // how many words for hour display (no end token guarantee, must check max size)
7
static const int HourCount= HOUR_COUNT;  // 24 plus one to distinguish between old and new day
8
static const int MaxMinuteWords= MAX_MINUTE_WORDS;  // how many words for minute display (no end token guarantee, must check max size)
9
static const int MinuteCount= 60;
10
11
static const int HourModesCount= HOUR_MODES_COUNT;         // count of different display modes for hours
12
static const int MinuteModesCount= MINUTE_MODES_COUNT;         // count of different display modes for minutes

Und jetzt teste ich.

von Herbert P. (herb3472)


Lesenswert?

@Frank:

wäre es möglich, in uclock.de die internen Feld-Rahmen auch schwarz 
einzufärben und damit unsichtbar zu machen?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> @Frank:
>
> wäre es möglich, in uclock.de die internen Feld-Rahmen auch schwarz
> einzufärben und damit unsichtbar zu machen?

Ja klar. Gerade geändert. So besser?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Hans H. schrieb:
> Leider noch zwei kleine Fehler:
>
>
1
> static const struct Modes tbl_modes[MODES_COUNT] = {
2
>     {  6,  5, L"ES IST HH UHR MM (12)" },
3
>     {  6,  9, L"ES IST HH UHR MM (24)" },
4
>            ^ hier muß 6 stehen
5
>     {  7,  5, L"ES IST HH UHR UND MM MINUTEN (12)" },
6
>     {  7,  9, L"ES IST HH UHR UND MM MINUTEN (24)" },
7
>            ^ hier auch
8
> ...
9
>

Was bewirken diese beiden Änderungen? Kann auf den ersten Blick keinen 
Unterschied sehen.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Joachim B. schrieb:
> Frank M. schrieb:
>> "dreiviertel neun" gilt dagegen für
>> Schwaben und Ossis.
>
> Einspruch immer noch!
> Gilt auch in WB

Was ist WB? Aber ich nehme mal an, dass entweder der Schwaben- bzw. 
Ossi-Modus für Dich auch passt. Oder gibt es da wieder einen weiteren 
Unterschied?

von Hans H. (loetkolben)


Lesenswert?

Frank M. schrieb:
> Hans H. schrieb:
>> Leider noch zwei kleine Fehler:
>>
>>
1
>> static const struct Modes tbl_modes[MODES_COUNT] = {
2
>>     {  6,  5, L"ES IST HH UHR MM (12)" },
3
>>     {  6,  9, L"ES IST HH UHR MM (24)" },
4
>>            ^ hier muß 6 stehen
5
>>     {  7,  5, L"ES IST HH UHR UND MM MINUTEN (12)" },
6
>>     {  7,  9, L"ES IST HH UHR UND MM MINUTEN (24)" },
7
>>            ^ hier auch
8
>> ...
9
>>
>
> Was bewirken diese beiden Änderungen? Kann auf den ersten Blick keinen
> Unterschied sehen.

Ohne diese gibt es bei mir in Windows einen Programmabritt.
Das ist ja der Index hour_txt für den Stundenmode, und der ist aktuell 
von 0..7 definiert (HOUR_MODES_COUNT ist 8).

Ein uC wird dann irgendwo in den Speicher greifen.

von Torsten C. (torsten_c) Benutzerseite


Angehängte Dateien:

Lesenswert?

Frank M. schrieb:
> Liegt an Mehrfachverwendung von WP_DUMMY:

Die Bezeichnung kommt aus der tbl_words.

@Herbert: Mach mal die Spalte [tbl_words].[text] bitte auf:

  Indiziert: "Ja (ohne Duplikate)"

Frank M. schrieb:
> Vielleicht solltest Du noch die aktuelle Uhrzeit mit hinzunehmen ;-)

Die kopiere ich aus dem Wiki und entferne unerlaubte Zeichen (siehe 
Bild).

: Bearbeitet durch User
von kiloamp (Gast)



Lesenswert?

N'Abend,

sieht aber alles noch ein wenig wirr aus :-)

siehe angehängte Fotos. Oder gibt es eine Gegend auf der Welt wo man
so spricht :-)
LG,

Micha

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

kiloamp schrieb:
> sieht aber alles noch ein wenig wirr aus :-)

Ja, das liegt aber nicht am Programm, sondern an Herberts Tabellen. Es 
wird im Moment öfters mal das erste statt das zweite gleichlautende Wort 
auf Frontplatte genommen. Dadurch ergibt sich eine falsche 
Wortreihenfolge.

Herbert wird das bestimmt noch in den Griff bekommen :-)

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Hans H. schrieb:
> Ohne diese gibt es bei mir in Windows einen Programmabritt.

Oops, ja. Sorry. Da fehlte noch ein enum.

Frank M. schrieb:
> Was bewirken diese beiden Änderungen?

Sollte durch die Enums nun klar werden.

Ist der CodeGen v0.09 OK?

Gute N8, bis Morgen.

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?


von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Joachim B. schrieb:
> Frank M. schrieb:
>> Was ist WB?
>
> https://www.youtube.com/watch?v=sqSHp4vgRkY

Okay, betrachte Dich als Ossi, dann passt das ;-)

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Torsten C. schrieb:
> Ist der CodeGen v0.09 OK?

Habe ich gerade mal kurz angetestet.

Mode 0 soll ja eigentlich 12h-Anzeige sein, Mode 1 dann 24h-Anzeige. 
Aber irgendwie sieht das in der Anzeige andersherum aus. Ich habe auch 
bei den anderen Modes den Eindruck, dass das "verschoben" ist.

Beispiel:

Mode 0: ES IST HH UHR MM (12)

21:19: ES IST NEUN ZEHN MINUTEN NACH EIN UND ZWANZIG UHR

Mode 1: Mode 1: ES IST HH UHR MM (24)

21:19: ES IST NEUN ZEHN UHR MINUTEN NACH

In Mode 1 sind viele Wörter in der verkehrten Reihenfolge, Mode 2 ist 
ganz kaputt.

Alles nachzuvollziehen auf http://uclock.de/

: Bearbeitet durch Moderator
von Hans H. (loetkolben)


Lesenswert?

@Frank: Kann ich nicht bestätigen, bei mir tut es.

Torsten hat ja in v0.09 nur enums statt den Zahlen in die tbl_modes[] 
Tabelle gebracht.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Hans H. schrieb:
> @Frank: Kann ich nicht bestätigen, bei mir tut es.
>
> Torsten hat ja in v0.09 nur enums statt den Zahlen in die tbl_modes[]
> Tabelle gebracht.

Hm, das Phänomen hatte ich auch schon in 0.08. Vermutlich habe ich da 
wieder irgendwo einen Verschieber mit 0 vs 1. Ich werde mal suchen....

von Herbert P. (herb3472)


Lesenswert?

eine Frage ist mir noch eingefallen: wäre es möglich, mit vertretbarem 
Aufwand auch eine monochrome Variante mit TLC5940 mit einzuarbeiten 
(evtl. mit Jumper wählbar)?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> eine Frage ist mir noch eingefallen: wäre es möglich, mit vertretbarem
> Aufwand auch eine monochrome Variante mit TLC5940 mit einzuarbeiten
> (evtl. mit Jumper wählbar)?

Ja, kann ich machen. Aber löten werde ich die nicht ;-)

von Joachim B. (jar)


Lesenswert?

Frank M. schrieb:
> Okay, betrachte Dich als Ossi, dann passt das

niemals!!!

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Hans H. schrieb:
> @Frank: Kann ich nicht bestätigen, bei mir tut es.

Habs gefunden:

Alt:
1
    hour_mode   = tbl_modes[mode].hour_txt   - 1;
2
    minute_mode = tbl_modes[mode].minute_txt - 1;
3
    tbl_minute  = &tbl_minutes[minute_mode][minute];

Neu:
1
    hour_mode   = tbl_modes[mode].hour_txt;
2
    minute_mode = tbl_modes[mode].minute_txt;
3
    tbl_minute  = &tbl_minutes[minute_mode][minute];

Da war also noch so ein 1 vs 0 Problem. Jetzt läufts wesentlich besser 
:-)

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Joachim B. schrieb:
> Frank M. schrieb:
>> Okay, betrachte Dich als Ossi, dann passt das
>
> niemals!!!

Okay, dann nennen wir den Mode zukünftig WB/Ossi ;-)

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Korrigiertes STM32-Projekt Version 0.4.2 (mit CodeGen 0.09 Tabellen) ist 
nun hochgeladen.

http://uclock.de/ läuft nun auch damit. Sieht schon sehr gut aus!

Kompliment an Herbert und Torsten!

@Herbert: Meine heutigen Fehlermeldungen kannst Du vergessen. Ich hatte 
die hour_modes und minute_modes verhackstückselt, weil da bis gestern 
immer ein Offset von 1 in den Tabellen war.

von Herbert P. (herb3472)


Lesenswert?

Jetzt ist mir noch was eingefallen: wenn wir den IR-Empfänger und den 
LDR (oder was auch immer) in der Mitte der Frontplatte hinter einem 
"toten" Buchstaben platzieren, dann werden wir ja wohl den LED-Strip an 
dieser Stelle unterbrechen - wodurch sich die Position der nachfolgenden 
LEDs um 1 verschiebt.

Habt Ihr das berücksichtigt, oder wollt Ihr das anders lösen?

von Herbert P. (herb3472)


Lesenswert?

@Frank:
hab mit uclock grad Mode0 und Mode1 durchprobiert, sieht wirklich gut 
aus - bis Mode1 ab 21:MM. Da bricht dann das Chaos aus.

Hab hier im Augenblick nur ein iPad zur Verfügung und kann daher nicht 
nachschauen, ob es an meiner tbl_hours liegt.

von Herbert P. (herb3472)


Lesenswert?

Habs mit Torstens rawgit durchprobiert (hier ist es der Mode "[2] ES IST 
HH UHR MM", hier tritt der Fehler nicht auf.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Jetzt ist mir noch was eingefallen: wenn wir den IR-Empfänger und den
> LDR (oder was auch immer) in der Mitte der Frontplatte hinter einem
> "toten" Buchstaben platzieren, dann werden wir ja wohl den LED-Strip an
> dieser Stelle unterbrechen - wodurch sich die Position der nachfolgenden
> LEDs um 1 verschiebt.

Der IR-Empfänger passt noch zwischen LED und Frontplatte. Die LED muss 
ja sowieso einen gewissen Abstand zur Frontplatte haben, um den 
Buchstaben voll auszuleuchten.

Herbert P. schrieb:
> @Frank:
> hab mit uclock grad Mode0 und Mode1 durchprobiert, sieht wirklich gut
> aus - bis Mode1 ab 21:MM. Da bricht dann das Chaos aus.

Danke für den Hinweis. Ich hatte in der Web-Version vergessen, die zwei 
zusätzlichen Prüfungen einzubauen, die wegen Wegfall von "PlusOne" nötig 
wurden. Habe ich nun korrigiert. Jetzt passt es wieder.

von Joachim B. (jar)


Lesenswert?

Frank M. schrieb:
> Der IR-Empfänger passt noch zwischen LED und Frontplatte.

der LDR auch, an Kette unterbrechen dachte ich nicht

soll doch die LED dahinter bei Fehler leuchten, könnte man ja auch 
abkleben oder einen Tropfen Schraubenlack schwarz raufmachen

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Eine Macke habe ich jetzt doch noch gefunden:

  http://uclock.de/?x=6&h=7&m=40

Da leuchtet das falsche "ZEHN".

Aber sonst sieht das verdammt gut aus!

: Bearbeitet durch Moderator
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Frank M. schrieb:
> Da war also noch so ein 1 vs 0 Problem.

Wegen der Index-Fehler konnte ich mit dem ersten Lob ^^ nicht so recht 
was anfangen. Du hattest den Fehler halt mit -1 korrigiert und dadurch 
zweimal Mehraufwand. Tut mir Leid. Aber nun stimmen die Indizes halt 
überall ohne Offset und mit den Enums sind Fehler auch leichter zu 
finden.

Joachim B. schrieb:
> einen Tropfen Schraubenlack schwarz raufmachen

Die LED wird halt nie nicht eingeschaltet, das ist Software.

> abkleben

Genau, mit Uhu, und dann gleich den Lichtsensor drauf!

Frank M. schrieb:
> Da leuchtet das falsche "ZEHN".

Genau, liegt an den Tabellen:

https://rawgit.com/TorstenC/1a59b9c73730eb8e144d/raw/WC24h_18x16_Test.html#M7T1640

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Ich habe gestern mit meiner 16x16-Version (zwei Großbildschirm-Kacheln 
und ein 4€-China-STM32) angefangen. Irgendwann vor Weihnachten hätte ich 
dafür auch gern einen AutoCode. Ist das machbar?

Zur Not nehme ich halt erstmal "WC24h16x16_28.Nov.2014_1607Uhr". Zum 
Testen reicht das ja.

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

Frank M. schrieb:
> Eine Macke habe ich jetzt doch noch gefunden:
>
>   http://uclock.de/?x=6&h=7&m=40
>
> Da leuchtet das falsche "ZEHN".

Habe (hoffentlich) alle diesbezüglichen Bugs behoben und das Feld 'text' 
der tbl_words indiziert ohne Whg. (dafür musste ich "DUMMY" einen Index 
von DUMMY_1 bis DUMMY_3 verpassen).

Bin jetzt für 2 Tage "Out of Order",

VG Herb

von Joachim B. (jar)


Lesenswert?

Torsten C. schrieb:
> Die LED wird halt nie nicht eingeschaltet, das ist Software.

es gibt keine fehlerfreie Software

>> abkleben
> Genau, mit Uhu, und dann gleich den Lichtsensor drauf!

oder Schmelzkleber, wenigstens reversibel

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Joachim B. schrieb:
> es gibt keine fehlerfreie Software

Aber fehlerfreien Kleber ;-))))

von Joachim B. (jar)


Lesenswert?

Frank M. schrieb:
> Aber fehlerfreien Kleber ;-))))

na ja, mein Stabilit Express lässt langsam nach in der Tube (wird zäh), 
neuer ist schon geliefert.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Joachim B. schrieb:
> es gibt keine fehlerfreie Software

Werden wir uns einig? Eine leuchtende LED unter Kleber ermöglicht ja 
noch keinen "Killer Poke".

Ich versuche gearade aus der 16x16.accdb gültigen Code zu erzeugen. 
Etwas anstrengend, da die Spaltennamen noch anders sind.

Also muss ein "ColumnExists()" erweitert werden. Dann klappt das auch:

http://stackoverflow.com/questions/1206596/checking-to-see-if-a-column-exists-in-a-data-reader

Manchmal ist C#.net doch doof!

von Joachim B. (jar)


Lesenswert?

Torsten C. schrieb:
> Werden wir uns einig? Eine leuchtende LED unter Kleber ermöglicht ja
> noch keinen "Killer Poke".

och ob die leuchtet oder nicht ist mir egal, ich denke nur an den 
Fotowiderstand und den TSOP das die beiden sich wohlfühlen und nicht 
erschrecken und ihre Arbeit vernachlässigen wenn sie von hinten 
bestrahlt werden. (wenns klemmt kann man immer noch ne Brücke für Din 
und Dout legen)

von Herbert P. (herb3472)


Lesenswert?

Willst Du nicht die 2 Tage warten, bis ich wieder zurueck bin und die 
16x 16 Tabellen editiert habe?

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Herbert P. schrieb:
> Willst Du nicht die 2 Tage warten

War nicht viel:
  23 ELF ➜ ELF***
  74 VIER*** ➜ VIER****
  [tbl_words].[text] ➜ Indiziert: "Ja (ohne Duplikate)"
  22 SIEBEN: [row] = 3
  80 *1 ➜ ●1
  81 *2 ➜ ●2
  82 *3 ➜ ●3

Ich mache gleich ein Update der Horror-Seite und lege die beiden Gists 
für den Code an.

Da kommt bestimmt noch mehr, aber um weiter zu kommen, reicht mir das.

PS: Die Sterne und die unterschiedlichen Spalten-Bezeichner stören auch 
nicht mehr:
1
this.Length = Convert.ToInt32(reader["length"]);
2
this.Text = Data.ColumnExists(reader, "text_show") ? (String)reader["text_show"] : (String)reader["text"];
3
int Suffix = this.Text.Split('*').Length - 1;
4
this.ID = (Suffix > 0) ? this.Text.Remove(this.Length) + "_" + Suffix : this.Text;

: Bearbeitet durch User
von Charly B. (charly)


Angehängte Dateien:

Lesenswert?

hier ein erster entwurf mit dem Arduino328mini,
mit RTC, externem EEprom, µSDKarte,DCF usw....
f. die Ledanzeige hab ich mir ein DC/DC Stepdown
mit zb. LM2569 gedacht, gibts f. ein paar € in
der Bucht

gibts noch ideen/verbesserungen ?


vlG
Charly

edit: RS232 RS485 u. RFM22 sind auch noch dabei
wenn man es moechte

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

@Herbert und all diejenigen, die sich die CooCox CoIDE V2beta 
heruntergeladen haben: Die V2Beta ist ziemlicher Murks. Es werden nur 
sehr wenige µCs unterstützt und eine Übernahme alter V1.x-Projekte 
funktioniert wohl auch noch nicht reibungslos.

Ich habe daher die Anleitung zur Installation von CooCox unter Windows 
angepasst:

     http://www.mikrocontroller.net/articles/STM32_CooCox_Installation#Installation_von_CooCox_unter_Windows

Dort zeigen jetzt die Links zum Download und zur Konfiguration auf die 
alte Webseite von CooCox (die sie glücklicherweise unter dem Namen 
www1.coocox.org zugänglich gemacht haben).

Ich kann daher denjenigen, welche sich mit der V2Beta erfolglos 
herumgeschlagen haben, sich die V1.7.7 zu installieren.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Charly B. schrieb:
> gibts noch ideen/verbesserungen ?

Wie ist der Anschluss für die LED-Strips zu verstehen? Drei 
Datenleitungen + Versorgung, wofür? Welche LED-Strips sind vorgesehen?

Bei 18 x 16 RGB-LEDs kämen ja bis zu 5,8A zusammen. Wie machst Du die 
Stromversorgung? Oder stellst Du per SW sicher, dass der Strom nicht zu 
hoch wird?

PS: Die 16 x 16 Version WC24h16x16_28.Nov.2014_1607Uhr_korr (Änderungen 
siehe oben) ist nun auch online (AutoCode + Horror-Seite)

: Bearbeitet durch User
von Joachim B. (jar)


Angehängte Dateien:

Lesenswert?

hey meine Arduino mega1284p Platinen sind angekommen, aber der DIL 
Aufbau läuft auch schon, DCF77 von ELV oben links ist auch schon da, bin 
am Software anpassen, bald kommt der Uhr Prototyp noch 11 x 10 ran, aber 
um Speicher ist mir nicht mehr bange, dann wird DCF und NTP reingebaut.

: Bearbeitet durch User
von Herbert P. (herb3472)


Lesenswert?

Sieht ja schon vielversprechend aus! Wenn ich wieder zu Hause bin, 
möchte ich auch meinen 1284 im DIL-Gehäuse zumindest einmal mit 
Bootloader zum Laufen bringen. Du hast einmal gepostet, dass es dabei 
Schwierigkeiten gegeben hat?

@Charly: warum Atmega328? Ich dachte, wir hätten uns hier auf STM32 und 
alternativ dazu auf den Atmel1284 geeinigt?

von Joachim B. (jar)


Lesenswert?

Herbert P. schrieb:
> Du hast einmal gepostet, dass es dabei
> Schwierigkeiten gegeben hat?

vielleicht (oder ne bestimmt) habe ich mich dämlich angestellt.

Jetzt wenn mans weiss ist es einfach

mighty m1284p runterladen, es gibt fertige Hex Files für 16MHz Quarz und 
Arduino Baudraten

https://github.com/maniacbug/mighty-1284p
https://github.com/maniacbug/mighty-1284p/zipball/master

File
optiboot_atmega1284p.hex

+ Hardwarebeschreibung für den Arduino Ordner
http://maniacbug.wordpress.com/2011/11/27/arduino-on-atmega1284p-4/

und der Ordner muss in die IDE
C:\Programme\Arduino\hardware\mighty-1284p

also mit ISP Progger am m1284p das hexfile brennen,
die Fuses setzten
clock div /8 raus
bootloader sektion auf 1k
bootrst war mein Fehler nicht gesetzt, muss gesetzt werden
dann ist der m1284p bereit um seriell über FTDI USB Adapter in der 
Arduino IDE zu empfangen.

von Joachim B. (jar)


Lesenswert?

Herbert P. schrieb:
> @Charly: warum Atmega328? Ich dachte, wir hätten uns hier auf STM32 und
> alternativ dazu auf den Atmel1284 geeinigt?

ist doch erst mal egal, ich glaube der m328p könnte reichen, aber im 
Moment geht mir der Speicher aus und ich entwickel mit m1284p

wo er erst mal probiert ist doch egal, nur nacher Prozzi neu definieren 
und ggffs. Timer und Ports anpassen

von Herbert P. (herb3472)


Lesenswert?

Suuuper! Danke! :-)))

von Charly B. (charly)


Lesenswert?

·

Torsten C. schrieb:
> Wie ist der Anschluss für die LED-Strips zu verstehen? Drei
> Datenleitungen + Versorgung, wofür? Welche LED-Strips sind vorgesehen?

An Strips kannste ja alles moegliche anschliessen da due 3 frei
programmierbare I/O's hast, ich baue mir strips mit WS2812, aber
auch zb. welche mit 74595 (DATA/CLOCK/LOAD) oder andere die mit
drei steuerleitungen zurechtkommen

versorgung kommt aus dem DC/DC Stepdown, die billigsten machen
ja so ~3A spitze, falls mehr gebraucht wird kann ja ein anderer
Wandler angeschlossen werden


@Herbert P.
ich denke der M328 Arduino reicht dafuer, den gibts f. 5-6€,
dafuer kannste das nicht selber bauen

vlG
Charly

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Charly B. schrieb:
> ich denke der M328 Arduino reicht dafuer, den gibts f. 5-6€,
> dafuer kannste das nicht selber bauen

hatte ich ja schon, dann kam das Nokia Display mal dazu, ich will noch 
wlan und Lichtspielereien und schon war der Speicher alle, was juckt 
mich bei dem Preis wenn alles läuft ein dickerer Prozzi wobei ein m2560 
zwar billig aber zu fett von der Platine ist, deswegen in der 
Entwicklungsphase den m1284p der auf der fertigen Platine auch 
downsizing zu m644 oder m32 erfahren kann, alles im TQFP44 oder wer mag 
im DIL40

von Hans H. (loetkolben)



Lesenswert?

Das erste öffentliche Testrelease des WordClock2 - 
Screensavers/Simulators ist fertig.

Die Tabellen von Herbert sind nach dem letzten Stand von Torsten C. 
eingebaut (Data from WC24h_18x16_V2_2010_2003_15_Dez_2014 CodeGen v0.09)

Ich habe drei Bilder angehängt, da seht ihr was möglich ist.

Im Konfigurationsdialog bitte den Haken "Simulation-Mode" anschalten.
Dann ist die Programmausgabe wie in den Bildern, und mit den Tasten 
entsprechend readme.txt kann der Sprachmodus und die Uhrzeit geändert 
werden.

Das ZipFile enthält die Exe (beim Start wird nur der 
Konfigurationsdialog aufgerufen) sowie ein cmd-File.
Das startet die Exe mit dem Parameter /s damit wird der Screensave-Mode 
(oder der Simulatormode) aktiviert.

Es gibt im Moment noch keine 64-bit Version, da die aktuelle Version im 
Simulationsmode vor allem zum Fehlerfinden in den Wortkombinationen 
dienen soll.
Wer das Programm jetzt schon als reinen Screensaver benutzen will nennt 
die Exe um nach *.scr und dann mit der rechten Maustaste im Menu 
"installieren" auswählen.

Link zum Zipfile
https://rawgit.com/code-creator/wordclock2scrnv/master/WordClock2.zip

SHA-1 0ae4bc0192d96df5df6ae16e618521113e2cf6cc wordclock2.exe
SHA-256: 
F814A93E5E3949184226BB86D37CFD7AE4F247EB93EC81994398D02621F989AA

Virengeprüft bei Virustotal.com mit 0/54.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Charly B. schrieb:
> aber auch zb. welche mit 74595 (DATA/CLOCK/LOAD) oder andere
> die mit drei steuerleitungen zurechtkommen

Guter Plan. Danke für die Info.

Charly B. schrieb:
> ich denke der M328 Arduino reicht dafuer, den gibts f. 5-6€,

Ich habe davon noch haufenweise in der Bastelkiste (3,3V und 5V):

http://www.aliexpress.com/snapshot/6046539383.html

http://www.aliexpress.com/snapshot/6240071452.html

Inzwischen sind die bestimmt noch billiger geworden. Allerdings braucht 
man beim "ProMini" noch einen USB➜UART Wandler. Der kostet aber auch 
quasi nix.

Wir sind hier zwar nicht im Forum "Markt", aber wenn jemand welche 
braucht: Bitte nicht neu bestellen, dann werde ich lieber meine los. ;-)

Ich bin komplett auf den STM32 umgestiegen.

: Bearbeitet durch User
von Charly B. (charly)


Angehängte Dateien:

Lesenswert?

moinmoin Torsten

ich brauche genau den im Bild, hab zwar nochmal 10 in China
bestellt aber wenn du noch welche hast schreib mir

vlG
Charly

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Charly B. schrieb:
> genau den im Bild

Das Problem kenne ich, Du hast diese hier:
https://dlnmh9ip6v2uc.cloudfront.net/assets/7/f/8/e/f/51eec494ce395f6f4c000000.png

Der Unterschied ist i.d.R. bei A4, A5, A6 und A7. Ich habe mich beim 
letzten Kauf gegen diese Variante entschieden, weil diese vier Pins 
nicht im Rastermaß für Lochraster sind. Sie sind also anders als Deine. 
:-(

Meine 3,3V-Module haben wiederum ein anderes Raster.

Von Deiner Sorte habe ich nur noch 2 Stück, lohnt sich also nicht.

Ich finde halt die Baugröße vergleichsweise genial. Daher hatte ich mir 
so viele gekauft:

https://dlnmh9ip6v2uc.cloudfront.net/assets/0/2/0/4/e/51eed447ce395f924b000000.png

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.