Multilayout-ESP-Wordclock icon indicating copy to clipboard operation
Multilayout-ESP-Wordclock copied to clipboard

Große Wortuhr

Open Yrrah1960 opened this issue 1 year ago • 14 comments

Hallo zusammen, erstmal vielen Dank für das tolle Wortuhr-Projekt. Ich baue auch gerade eine Wortuhr im Format 1 x 1 m. Für die Beleuchtung der einzelnen Buchstuben (außer den Minuten) verwende ich 2 LED´s (Matrix [DE10x11.nero.hpp]). Ich habe mich mal daran versucht die Matrix abzuändern. Das Anzeigen der Uhrzeit klappt, aber alle anderen Funktionen nicht. Da reichen meine Programmierkenntnisse noch nicht aus. Bisher habe ich die Software von "panbachi" verwendet, die aber leider nicht diese Funktionsvielfalt hat. Bei panbachi ist die Eingabe der Leistung des Netzteiles möglich und dadurch wird die maximal zulässige Helligkeit der LED´s gesteuert. Vielleicht eine Anregung für eine neue Programmerweiterung.

Könnt ihr mir weiterhelfen?

Gruß

Yrrah1960 avatar Mar 07 '23 16:03 Yrrah1960

Hallo @Yrrah1960,

ja sehr cool, eine große Uhr ist auch noch auf meiner Bucketliste :-). Wenn du fertig bist kannst du ja mal paar Bilder zeigen.

ich hätte es wahrscheinlich so implementiert, dass ich zwei Stripes parallel verlege und die beiden DI Pins des Stripes parallel am Node anschließe. Ist aber nicht getestet, vielleicht klappt es ja. Nun zu deinem Problem.

Ich bin grad am umbauen des Backends innerhalb der Uhr, um tatsächlich genau solche Problemstellungen einfach zu triggern, evtl auch über das Webinterface, aber deswegen kann ich grade nur bedingt helfen, weil ich die neue Struktur schon im kopf habe.

Vielleicht wäre einfacher Workaround in der Led.hpp die folgende Funktion:

void Led::setPixel(uint8_t rr, uint8_t gg, uint8_t bb, uint8_t ww, uint16_t i) {

    if (G.Colortype == Grbw) {
        strip_RGBW->SetPixelColor(i, RgbwColor(rr, gg, bb, ww));
    } else {
        strip_RGB->SetPixelColor(i, RgbColor(rr, gg, bb));
    }
}

so abzuändern:

void Led::setPixel(uint8_t rr, uint8_t gg, uint8_t bb, uint8_t ww, uint16_t i) {
    
    if (i < 110) {
    i *= 2;
         if (G.Colortype == Grbw) {
            strip_RGBW->SetPixelColor(i, RgbwColor(rr, gg, bb, ww));
            strip_RGBW->SetPixelColor(i+1, RgbwColor(rr, gg, bb, ww));
         } else {
             strip_RGB->SetPixelColor(i, RgbColor(rr, gg, bb));
             strip_RGB->SetPixelColor(i+1, RgbColor(rr, gg, bb));
         }
    }
    else
    {
    i *= 2;
        if (G.Colortype == Grbw) {
             strip_RGBW->SetPixelColor(i, RgbwColor(rr, gg, bb, ww));
        } else {
            strip_RGB->SetPixelColor(i, RgbColor(rr, gg, bb));
        }
    }
}

Man müsste dann allerdings auch noch die numPixel in der UhrTypeDef, also der DE10x11Nero.hpp, auf die neue Gesamtzahl and LEDs (inclusive Minuten) anpassen.

dbambus avatar Mar 08 '23 08:03 dbambus

image

Die Uhr 1x1 ist schon fertig. Da ich auch schon eine in 50 x 50 cm gebaut und deine Software aufgespielt habe möchte ich auch gerne den Leistungsumfang für die große Uhr. Ich versuche mich mal an deinem Vorschlag.

Yrrah1960 avatar Mar 08 '23 08:03 Yrrah1960

Hallo Yrrah1960, woraus besteht dein Buchstaben-Layout. Für einen Freund habe ich auch eine große Uhr gefertigt 850x850 mm. Das Layout wird in Stahlblech gelasert. Das Problem mit den LED´s habe ich gelöst indem ich LED-Streifen 30 pro Meter verwende und jede 2. ausgelötet habe. War eine doofe Arbeit, weil ja noch die Brücken einlötet werden musste. LG echo

echo1483 avatar Mar 10 '23 18:03 echo1483

@Yrrah1960

Das sieht ja richtig stark aus. :-) Wie hat denn mein Vorschlag geklappt?

@echo1483

Ich arbeite für genau diesen Fall an der Software. Ich habe hier vor eine 400x400mm Wordclock zu bauen und will dafür 74 LED/m Stripes verwenden, davon aber nur jede zweite in Benutzung. Dafür will ich eine Softwarelösung entwickeln, die auch mit allen Funktionen kooperiert.

Mit freundlichen Grüßen David

dbambus avatar Mar 10 '23 19:03 dbambus

Ist schon echt groß, wenn die Uhr fertig ist stelle ich mal ein Foto ein. LG echo 1678516292753 1678516292758 1678516292761

echo1483 avatar Mar 11 '23 06:03 echo1483

Hallo zusammen,

meine Blende besteht auch aus einer Stahlplatte, die ich mit Salz/Essigwasser eingesprüht habe, damit sich eine Rostschicht bildet. Beim Innenleben der Uhr habe ich eine einfache Lösung gewählt. Platte / Leisten aus dem Baumarkt und einen Rahmen gebaut. Danach noch das Raster aus dem 3D-Drucker.... Innen Dadurch bin ich mit meiner Anzahl an LEDs (30/m) bei 2 Stück pro Buchstaben gelandet.

Das mit dem anpassen der Software hat noch nicht geklappt. Habe die vorgeschlagene Änderung vorgenommen und noch in der DE10x11nero die LEDs die zusätzlich leuchten sollen eingefügt.

Heute widme ich meinem anderen Hobby VeloSolex

Gruß und ein schönes Wochenende

Yrrah1960 avatar Mar 11 '23 08:03 Yrrah1960

So die Metallplatte ist schon mal angepasst. Word01 Word02

echo1483 avatar Mar 17 '23 13:03 echo1483

@echo1483

Wo hast du denn die Metallplatte machen lassen ? Ich hätte auch an so etwas Interesse :-)

dbambus avatar Mar 17 '23 13:03 dbambus

Kann ich dir gar nicht sagen, die Metallplatte hat der Arbeitskollege meines Sohnes im Auftrag gegeben. Er ist gerade im Urlaub werde aber mal fragen. Ist schon irre wie sauber das Teil gelasert wurde. LG

echo1483 avatar Mar 17 '23 13:03 echo1483

@dbambus Komme ohne deine Hilfe nicht weiter. Wo ist dem im Programmcode die Anzahl der LEDs versteckt, bzw. wo wird die Anzahl berechnet aus Zeilen und Spalten?

Gruß aus der Pfalz

Yrrah1960 avatar Mar 20 '23 17:03 Yrrah1960

@echo1483

ich hätte noch immer Interesse an Esoterik einer Stahlplatte :-) Falls sich da was ergibt, wäre es cool.

Wenn du planst einen neunen Nachbau der Uhr zu machen habe ich etwas cooles in der Software implementiert. Man kann nämlich angeben, dass jeded zweite LED übersprungen werden soll :-)

@Yrrah1960

Ich werde noch an einer Version arbeiten die auch zwei LEDs pro Buchstabe unterstützt.

Mit freundlichen Grüßen David

dbambus avatar Jul 05 '23 13:07 dbambus

@dbambus Ich denke das war eine einmalige Aktion, trotzdem wäre es super wenn man selbst die LED-Streifen anpassen könnte. Das auslöten und die Brücken einfügen macht schon viel arbeit. Für das lasern hat er mit Material 1mm Stahlblech etwa 50,00€ und das Pulverbeschichten noch einmal 50,00€ bezahlt. Es war kein Freundschaftsdienst.

LG echo1483

echo1483 avatar Jul 10 '23 06:07 echo1483

@dbambus Erstmal vielen Dank, dass du an der Software weiterarbeitest. Ich verfolge interessiert alle Neuerungen. Arbeitest du noch an einer Version, die 2 LED´s pro Buchstabe unterstützt?

Ein schönes Wochenende

Yrrah1960 avatar Nov 17 '23 13:11 Yrrah1960

Hallo @Yrrah1960,

Ich habe in der kürzlich veröffentlichten Version implementiert, dass jede zweite LED aufleuchten kann. Außerdem wollte ich versuchen, zwei LEDs pro Buchstabe zu realisieren. Das habe ich probiert, aber aus undokumentierten Gründen hat es damals nicht funktioniert und ich habe es mangels Priorität sein lassen.

Zu ändern wäre diese Passage in der Uhrtype.hpp:

virtual const uint16_t getFrontMatrixIndex(const uint8_t row, uint8_t col) {

        uint8_t newColsWordMatrix = colsWordMatrix();
        uint16_t numPixelsWordMatrix = rowsWordMatrix() * colsWordMatrix();

        if (G.buildTypeDef == BuildTypeDef::DoubleResM1) {
            newColsWordMatrix = 2 * colsWordMatrix() - 1;
            numPixelsWordMatrix = rowsWordMatrix() * newColsWordMatrix;
            col *= 2;
        }
        if (row % 2 != 0) {
            col = newColsWordMatrix - col - 1;
        }
        uint16_t returnValue = col + (row * newColsWordMatrix);

        if (returnValue > numPixelsWordMatrix) {
            Serial.println(
                "[ERROR] getFrontMatrixIndex() returnValue out of Bounds");
        }

        return returnValue;
    };

Hier müsste man noch einen Wert BuildTypeDef::DoubleRes mit entsprechender Logik hinzufügen.

Mal sehen, vielleicht komme ich noch dazu.

Mit freundlichen Grüßen David

dbambus avatar Nov 20 '23 08:11 dbambus