Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Große Wortuhr #211

Open
Yrrah1960 opened this issue Mar 7, 2023 · 14 comments
Open

Große Wortuhr #211

Yrrah1960 opened this issue Mar 7, 2023 · 14 comments

Comments

@Yrrah1960
Copy link

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ß

@dbambus
Copy link
Collaborator

dbambus commented Mar 8, 2023

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.

@Yrrah1960
Copy link
Author

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.

@echo1483
Copy link

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

@dbambus
Copy link
Collaborator

dbambus commented Mar 10, 2023

@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

@echo1483
Copy link

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

@Yrrah1960
Copy link
Author

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

@echo1483
Copy link

So die Metallplatte ist schon mal angepasst.
Word01
Word02

@dbambus
Copy link
Collaborator

dbambus commented Mar 17, 2023

@echo1483

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

@echo1483
Copy link

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

@Yrrah1960
Copy link
Author

@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

@dbambus
Copy link
Collaborator

dbambus commented Jul 5, 2023

@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

@echo1483
Copy link

@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

@Yrrah1960
Copy link
Author

@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

@dbambus
Copy link
Collaborator

dbambus commented Nov 20, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants