Hallo, wie programmiere ich einen zweizeiligen Text für eine 16x16 Matrix in der Arduino IDE? Ich habe bisher nur einen "Scrolling Text" hinbekommen aber nur im oberen Bereich der Matrix. Außerdem hätte ich gerne gewusst wie man den Text in die Mitte bekommt, also die Position verändert. Danke
:
Gesperrt durch Moderator
Welche 16x16-Matrix? Es gibt ja nur eine am Markt. SCNR PS: Meine Glaskugel wird gerade kalibriert.
:
Bearbeitet durch User
100Ω W. schrieb: > Welche 16x16-Matrix? Es gibt ja nur eine am Markt. > SCNR > > PS: Meine Glaskugel wird gerade kalibriert. Diese Neomatrix mit den WS2812b LED´s drauf.
Christian schrieb: > Diese Neomatrix mit den WS2812b LED´s drauf. Welche ist diese Neomatrix? Kannst du hier den Code reinstellen, den Verwendest? Troll?
100Ω W. schrieb: > Christian schrieb: >> Diese Neomatrix mit den WS2812b LED´s drauf. > > Welche ist diese Neomatrix? > Kannst du hier den Code reinstellen, den Verwendest? > > Troll? #include <Adafruit_GFX.h> #include <Adafruit_NeoMatrix.h> #include <Adafruit_NeoPixel.h> // DATA PIN // If you want to use a different data pin on your microcontroller CHANGE THIS! #define DATA_PIN 6 #define arr_len( x ) ( sizeof( x ) / sizeof( *x ) ) // Matrix setup params Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(48, 16, DATA_PIN, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_COLUMNS +NEO_MATRIX_ZIGZAG, NEO_GRB + NEO_KHZ800); // Edit this // The important stuff, your message and colors char* Text[]= {" "," "}; const uint16_t colors[] = { matrix.Color(0, 128, 0), matrix.Color(100, 255, 0), matrix.Color(255, 255, 0),matrix.Color(0, 0, 255), matrix.Color(128, 0, 0), matrix.Color(255, 69, 0), matrix.Color(0, 255, 0)}; int brightness = 15; // End Edit int numMode = arr_len(Text)-1; int numColor = arr_len(colors)-1; int pixelPerChar = 4; int maxDisplacement; int mode = 0; void setup() { matrix.begin(); matrix.setTextWrap(false); matrix.setBrightness(brightness); matrix.setTextColor(colors[0]); } int y = matrix.height(); int x = matrix.width(); int pass = 0; int line_pass = 0; void loop() { // if mode greater than numMode reset if (mode > numMode) { mode = 0; } matrix.fillScreen(0); matrix.setCursor(x, 0); scroll(Text[mode],20); } // this does the magic of scrolling void scroll(char* message,int delays) { maxDisplacement = strlen(message) * pixelPerChar + matrix.width(); if(++line_pass > matrix.width()) line_pass = 0; matrix.print(String(message)); if(--x < -maxDisplacement) { x = matrix.width(); if(++pass >= numColor) { pass = 0; }; matrix.setTextColor(colors[pass]); mode++; } matrix.show(); delay(delays); }
Tausch die Null in der Zeile gegen eine andere Zahl aus, die <16 ist.
1 | matrix.setCursor(x, 0); |
:
Bearbeitet durch User
100Ω W. schrieb: > Tausch die Null in der Zeile gegen eine andere Zahl aus, die <16 > ist.matrix.setCursor(x, 0); Dadurch ändert sich die Textposition richtig? Und wie muss ich vorgehen wenn der Text dann zweizeilig laufen soll?
100Ω W. schrieb: > Christian schrieb: >> Dadurch ändert sich die Textposition richtig? > > Ja, sollte. Gut okay und welche Zahl bezeichnet die Mitte von 16x16?
Christian schrieb: > 100Ω W. schrieb: >> Christian schrieb: >>> Dadurch ändert sich die Textposition richtig? >> >> Ja, sollte. > > Gut okay und welche Zahl bezeichnet die Mitte von 16x16? 42!
Christian schrieb: > Gut okay und welche Zahl bezeichnet die Mitte von 16x16?
1 | 16/2 = 8 |
2 | 8 - 1, weil mit Null begonnen wird zu Zählen |
100Ω W. schrieb: > Christian schrieb: >> Gut okay und welche Zahl bezeichnet die Mitte von 16x16? > 16/2 = 8 > 8 - 1, weil mit Null begonnen wird zu Zählen Also: matrix.setCursor(x, 8);
100Ω W. schrieb: > Christian schrieb: >> Also: matrix.setCursor(x, 8); > > Ja. Jetzt läuft die Schrift unten entlang nicht mittig! :(
Christian schrieb: > Jetzt läuft die Schrift unten entlang nicht mittig! :( Dann Probiere andere Werte aus.
100Ω W. schrieb: > Christian schrieb: >> Jetzt läuft die Schrift unten entlang nicht mittig! :( > > Dann Probiere andere Werte aus. Habs nochmal geteilt: matrix.setCursor(x, 4); scheint mittig zu sein! ;)
Christian schrieb: > 100Ω W. schrieb: >> Christian schrieb: >>> Jetzt läuft die Schrift unten entlang nicht mittig! :( >> >> Dann Probiere andere Werte aus. > > Habs nochmal geteilt: matrix.setCursor(x, 4); scheint mittig zu sein! ;) Damit auch noch etwas sinnvolles von mir kommt: Der Font wird wahrscheinlich 7 bzw. 8 Pixel hoch sein und die Matrix von oben nach unten beschrieben. Wenn also die Schrift bei Pixel-Reihe Nr. 4 beginnt, dann erstreckt sie sich in vertikale Richtung bis Pixel-Reihe Nr. 11 bzw. 12; so erscheint die Schrift mittig. Das erklärt auch, warum bei matrix.setCursor(x, 8) die Schrift Christian schrieb: > unten entlang nicht mittig! :( läuft. Edit: etwas präziser formuliert
:
Bearbeitet durch User
Beitrag #6670075 wurde von einem Moderator gelöscht.
Nur wie man sie zweizeilig laufen lässt (oben/unten) habe ich noch nicht herausgefunden, und kann mir hier scheinbar auch niemand sagen.
Christian schrieb: > Nur wie man sie zweizeilig laufen lässt (oben/unten) habe ich noch nicht > herausgefunden, und kann mir hier scheinbar auch niemand sagen. Vielleicht mal selber drüber nachdenken? Wenn man weiß wie man welchen Text wo anzeigen lässt, wäre es dann WIRKLICH zu viel verlangt mal eine Minute das Gehirn einzuschalten anstatt darauf zu warten dass einem jemand die Lösung frei Haus in den Hintern schiebt?
:
Bearbeitet durch User
Beitrag #6670110 wurde von einem Moderator gelöscht.
Beitrag #6670116 wurde von einem Moderator gelöscht.
Beitrag #6671048 wurde von einem Moderator gelöscht.
Beitrag #6671099 wurde von einem Moderator gelöscht.
Beitrag #6671103 wurde von einem Moderator gelöscht.
Beitrag #6671104 wurde von einem Moderator gelöscht.
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.