Arduino Mega Matrix Laufschrift

Guten Tag zusammen :slight_smile:

Ich habe folgendes Problem:
Ich möchte eine NeoPixel Matrix Laufschrift erstellen soweit klappt auch alles allerdings kann man auf meinen LED Strips den Text nicht entziffern laut Beispiel Sketch soll da Howdy Stehen (siehe Bild) kann mir einer Sagen woran es liegen Könnte?

Aufbau meiner Schaltung ist :
Arduino Mega 5V Speisung

30*16 LED Schild im ZigZag aufgebaut (so auch Programmiert)
NeoPixel Pin 13
Zum testen habe ich das Beispiel : Adafruit_Neomatrix_tiletest probiert.

W√§re f√ľr jede Hilfe Dankbar :slight_smile:
Mfg

WhatsApp Image 2022-01-15 at 16.24.44

falsch verdrahtet
falsches Zigzag
falscher Code

Mehrfachauswahl möglich.

zur Einstimmung in dieses Forum, lies mal hier was es bei einem Problemchen wie diesem alles braucht:

Wielche Matrix hat ein Buchstabe? 5x7?
Schreibe mal nur einen Buchstaben zB ein N und schaue welche Pixel leuchten.

Die Stromversorgung ist stark genug? Hast Du ein 30A Netzteil?
Muß es umbedingt pin 13 sein? nimm bitte ein anderes.

Gr√ľ√üe Uwe

Falsch verdrahtet: Nein habe das einmal in klein genauso Nachgebaut mit einem Arduino Nano da Funktioniert es.

Was meinst du mit falsches ZigZag das erstel Pixel ist oben Links-Läuft nach Rechts-Einen Runter-Dann nach Links und immer so weiter.

Der code war ein Beispiel code aus der Adafruit NeoMatrix Bibiliothek

Wielche Matrix hat ein Buchstabe? 5x7? Die frage verstehe ich nicht ganz

Stromversorgung ist Stark genug da ich alle Pixel gleichzeitig leuchten lassen kann (strandtest) ohne probleme.

habe schon mehrere Pins ausprobiert mit dem Selben ergebniss

Aus wievielen Punkten besteht jeder Buchstabe?
Welches Netzteil verwendest Du?
Ein anderes Pin zu verwenden war kein L√∂sungsvorschlag sondern ein Vorschlag zuk√ľnftige Probleme zu verhindern.
Bitte Sketch bzw Link auf Beispiel und Foto vom Aufbau zeigen.

Gr√ľ√üe Uwe

Gr√ľ√üe Uwe

Das wäre der Sketch den ich benutzen möchte:
Bei dem wird mir aber gar nix angezeigt

#include <SoftwareSerial.h>
#include "Arduino.h"
#include <Wire.h>//Include libraries: SoftwareSerial & Wire
SoftwareSerial ESP_BT(17,16); //Define PIN11 & PIN12 as RX and TX pins

#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#include <EEPROM.h>


#define PIN 13

// MATRIX DECLARATION:
// Parameter 1 = width of NeoPixel matrix
// Parameter 2 = height of matrix
// Parameter 3 = pin number (most are valid)
// Parameter 4 = matrix layout flags, add together as needed:
//   NEO_MATRIX_TOP, NEO_MATRIX_BOTTOM, NEO_MATRIX_LEFT, NEO_MATRIX_RIGHT:
//     Position of the FIRST LED in the matrix; pick two, e.g.
//     NEO_MATRIX_TOP + NEO_MATRIX_LEFT for the top-left corner.
//   NEO_MATRIX_ROWS, NEO_MATRIX_COLUMNS: LEDs are arranged in horizontal
//     rows or in vertical columns, respectively; pick one or the other.
//   NEO_MATRIX_PROGRESSIVE, NEO_MATRIX_ZIGZAG: all rows/columns proceed
//     in the same order, or alternate lines reverse direction; pick one.
//   See example below for these values in action.
// Parameter 5 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_GRBW    Pixels are wired for GRBW bitstream (RGB+W NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)


// Example for NeoPixel Shield.  In this application we'd like to use it
// as a 5x8 tall matrix, with the USB port positioned at the top of the
// Arduino.  When held that way, the first pixel is at the top right, and
// lines are arranged in columns, progressive order.  The shield uses
// 800 KHz (v2) pixels that expect GRB color data.
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(
  30,                                              //Select LEDs of each row (15 in my case) 
  16,                                               //Select amount of rows (7 in my case)
  PIN,                                                
  NEO_MATRIX_TOP + NEO_MATRIX_LEFT +           //Define first data pin (right bottom corner is my first pin)
  NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG,             //Define the type of connection (in a zig zag connections and divided by rows not columns)
  NEO_GRB            + NEO_KHZ800);


  int Red=255,Green=0,Blue=0;
  String text="Easy Tech";
  String RGB;
  int pixelPerChar = 5,RGB_Completed=0;
  int Delay, Brightness;
const uint16_t colors[] = {matrix.Color(Green,Red,Blue)};

//  matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(0, 0, 255) };//matrix.Color(Red, Green, Blue),


void setup() {
  
  Serial.begin(115200);
  ESP_BT.begin(9600);
  EEPROM.begin();
 initdata();
 // Serial.println("Start");
  const uint16_t colors[] = {matrix.Color(Green,Red,Blue)};
  matrix.begin();
  matrix.setTextWrap(false);
  matrix.setBrightness(Brightness);
  matrix.setTextColor(colors[0]);
 //matrix.setTextColor(matrix.Color(Green,Red,Blue));
}

int x    = matrix.width();
int pass = 0;

void loop() {



  while(ESP_BT.available()){
    char ReadChar = (char)ESP_BT.read();
     Serial.println(ReadChar);
 
    // Right parentheses ) indicates complet of the string
    if(ReadChar == ')' ||ReadChar == '}' || ReadChar == ']'){
      if(ReadChar == ')' ){
      RGB_Completed = 1;
       }
      if(ReadChar == '}'){
       RGB_Completed = 2;
      }
      if(ReadChar == ']'){
       RGB_Completed = 3;
      }
    }
    else{
       RGB += ReadChar;
    }
    
  
  }
  if(RGB_Completed!=0){
      if(RGB_Completed==1){
             Light_RGB_LED();
             RGB_Completed=0;
         }
      if (RGB_Completed==2){
          text=RGB;
           int _size = text.length();
            int i;
          for(i=0;i<_size;i++)
         {
       EEPROM.write(50+i,text.charAt(i));
       Serial.println(text.charAt(i));
           }
      EEPROM.write(50+_size,'\0');   //Add termination null character for String Data
     
           RGB_Completed=0;
           RGB="";
        }
      if (RGB_Completed==3){
        int val=RGB.toInt();
        if(val>0 && val<=100){
          if(val==0){
            val=1;
          }
          Delay=(100-val)*2.5;
          //scroll(Delay);
          EEPROM.write(0,Delay);
        }
        else{
          val=val-100;
          matrix.setBrightness(val);
          EEPROM.write(5,val);
        }
       
        RGB=""; 
        RGB_Completed=0;
      }
    }

   if(RGB_Completed==0){
  //.  Serial.println(RGB_Completed);
    scroll();
  }

}

void scroll(){
  //Serial.println(text);
  int  maxDisplacement = text.length() * pixelPerChar + matrix.width();
  matrix.fillScreen(0);
  matrix.setCursor(x, 0);
  
  matrix.print(text);
  if(--x < -maxDisplacement) {
    x = matrix.width();
  
    if(++pass >= 1){ pass = 0;
   // matrix.setTextColor(colors[pass]);
     matrix.setTextColor(matrix.Color(Green,Red,Blue));
    //  matrix.setTextColor(matrix.Color(Red,Green,Blue));
    }
  }
  
  matrix.show();
  delay(Delay);
  
}



void Light_RGB_LED(){
 
  int SP1 = RGB.indexOf('.');
  int SP2 = RGB.indexOf('.', SP1+1);
  int SP3 = RGB.indexOf('.', SP2+1);
  String R = RGB.substring(0, SP1);
  String G = RGB.substring(SP1+1, SP2);
  String B = RGB.substring(SP2+1, SP3);
  Red=R.toInt();Green=G.toInt();Blue=B.toInt();
// Serial.println(R);
 matrix.setTextColor(matrix.Color(Green,Red,Blue));
  EEPROM.write(10,Red);EEPROM.write(15,Green);EEPROM.write(20,Blue);
 RGB="";
 
}

und ich hoffe ich habe den aufbau verstädnlich gezeichnet:

Hat mit Deiner Frage nichts zu tun, dennoch:

Der Mega2560 hat mehrere serielle Schnittstellen in Hardware, da ist SoftwareSerial vollkommen daneben.

Genial!
Da ist auf Serial2 ein Sofwtareserial aufgepfropft :slight_smile:

Ja.
Und im Sketch machst Du bitte mal folgendes:
STRG-F
In die Obere Zeile trägst Du ein:
ESP_BT.
In die untere Zeile:
Serial2.
(In beiden Zeilen den . mit einschreiben!) Und dann auf alle ersetzen.

Zeile 1 und Zeile 4 kommentierst du aus.

wäre es dann so richtig?


#include "Arduino.h"
#include <Wire.h>//Include libraries: SoftwareSerial & Wire


#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
#include <EEPROM.h>

#ifndef PSTR
 #define PSTR // Make Arduino Due happy
#endif

#define PIN 13

// MATRIX DECLARATION:
// Parameter 1 = width of NeoPixel matrix
// Parameter 2 = height of matrix
// Parameter 3 = pin number (most are valid)
// Parameter 4 = matrix layout flags, add together as needed:
//   NEO_MATRIX_TOP, NEO_MATRIX_BOTTOM, NEO_MATRIX_LEFT, NEO_MATRIX_RIGHT:
//     Position of the FIRST LED in the matrix; pick two, e.g.
//     NEO_MATRIX_TOP + NEO_MATRIX_LEFT for the top-left corner.
//   NEO_MATRIX_ROWS, NEO_MATRIX_COLUMNS: LEDs are arranged in horizontal
//     rows or in vertical columns, respectively; pick one or the other.
//   NEO_MATRIX_PROGRESSIVE, NEO_MATRIX_ZIGZAG: all rows/columns proceed
//     in the same order, or alternate lines reverse direction; pick one.
//   See example below for these values in action.
// Parameter 5 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_GRBW    Pixels are wired for GRBW bitstream (RGB+W NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)


// Example for NeoPixel Shield.  In this application we'd like to use it
// as a 5x8 tall matrix, with the USB port positioned at the top of the
// Arduino.  When held that way, the first pixel is at the top right, and
// lines are arranged in columns, progressive order.  The shield uses
// 800 KHz (v2) pixels that expect GRB color data.
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(
  30,                                              //Select LEDs of each row (15 in my case) 
  15,                                               //Select amount of rows (7 in my case)
  PIN,                                                
  NEO_MATRIX_TOP + NEO_MATRIX_LEFT +           //Define first data pin (right bottom corner is my first pin)
  NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG ,             //Define the type of connection (in a zig zag connections and divided by rows not columns)
  NEO_RGB            + NEO_KHZ800);


  int Red=255,Green=0,Blue=0;
  String text="H";
  String RGB;
  int pixelPerChar = 3,RGB_Completed=0;
  int Delay, Brightness;
const uint16_t colors[] = {matrix.Color(Green,Red,Blue)};

//  matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(0, 0, 255) };//matrix.Color(Red, Green, Blue),


void setup() {
  
  Serial.begin(38400);
  Serial2.begin(38400);
  EEPROM.begin();
 initdata();
 // Serial.println("Start");
  const uint16_t colors[] = {matrix.Color(Green,Red,Blue)};
  matrix.begin();
  matrix.setTextWrap(false);
  matrix.setBrightness(Brightness);
  matrix.setTextColor(colors[0]);
 //matrix.setTextColor(matrix.Color(Green,Red,Blue));
}

int x    = matrix.width();
int pass = 0;

void loop() {



  while(Serial2.available()){
    char ReadChar = (char)Serial2.read();
     Serial.println(ReadChar);
 
    // Right parentheses ) indicates complet of the string
    if(ReadChar == ')' ||ReadChar == '}' || ReadChar == ']'){
      if(ReadChar == ')' ){
      RGB_Completed = 1;
       }
      if(ReadChar == '}'){
       RGB_Completed = 2;
      }
      if(ReadChar == ']'){
       RGB_Completed = 3;
      }
    }
    else{
       RGB += ReadChar;
    }
    
  
  }
  if(RGB_Completed!=0){
      if(RGB_Completed==1){
             Light_RGB_LED();
             RGB_Completed=0;
         }
      if (RGB_Completed==2){
          text=RGB;
           int _size = text.length();
            int i;
          for(i=0;i<_size;i++)
         {
       EEPROM.write(50+i,text.charAt(i));
       Serial.println(text.charAt(i));
           }
      EEPROM.write(50+_size,'\0');   //Add termination null character for String Data
     
           RGB_Completed=0;
           RGB="";
        }
      if (RGB_Completed==3){
        int val=RGB.toInt();
        if(val>0 && val<=100){
          if(val==0){
            val=1;
          }
          Delay=(100-val)*2.5;
          //scroll(Delay);
          EEPROM.write(0,Delay);
        }
        else{
          val=val-100;
          matrix.setBrightness(val);
          EEPROM.write(5,val);
        }
       
        RGB=""; 
        RGB_Completed=0;
      }
    }

   if(RGB_Completed==0){
  //.  Serial.println(RGB_Completed);
    scroll();
  }

}

void scroll(){
  //Serial.println(text);
  int  maxDisplacement = text.length() * pixelPerChar + matrix.width();
  matrix.fillScreen(0);
  matrix.setCursor(x, 2);
  
  matrix.print(text);
  if(--x < -maxDisplacement) {
    x = matrix.width();
  
    if(++pass >= 1){ pass = 0;
   // matrix.setTextColor(colors[pass]);
     matrix.setTextColor(matrix.Color(Green,Red,Blue));
    //  matrix.setTextColor(matrix.Color(Red,Green,Blue));
    }
  }
  
  matrix.show();
  delay(Delay);
  
}



void Light_RGB_LED(){
 
  int SP1 = RGB.indexOf('.');
  int SP2 = RGB.indexOf('.', SP1+1);
  int SP3 = RGB.indexOf('.', SP2+1);
  String R = RGB.substring(0, SP1);
  String G = RGB.substring(SP1+1, SP2);
  String B = RGB.substring(SP2+1, SP3);
  Red=R.toInt();Green=G.toInt();Blue=B.toInt();
// Serial.println(R);
 matrix.setTextColor(matrix.Color(Green,Red,Blue));
  EEPROM.write(10,Red);EEPROM.write(15,Green);EEPROM.write(20,Blue);
 RGB="";
 
}

Warum änderst Du die 9600?

kompiliert er Fehler- und Warnungsfrei?

DATEI - Voreinstellungen - Ausf√ľhrliche Ausgabe w√§hrend Kompilierung
Compiler-Warnungen: ALLE

es wird alles fehler und warnungsfrei geladen

die √§nderung der 9600 hatte ich √ľbersehen

Bei mir nicht.

/tmp/arduino_modified_sketch_505232/sketch_jan16b.ino: In function 'void setup()':
sketch_jan16b:66:2: error: 'initdata' was not declared in this scope
  initdata();
  ^~~~~~~~

Die meldung steht bei mir nicht das eizige was bei mir im Info feld orange ist ist:
RGB_LED_Matrix_Controll\Function.ino:42:8: warning: variable 'data' set but not used [-Wunused-but-set-variable]
char data[100]; //Max 100 Bytes
^~~~

habe es vorher nicht gesehen dachte wenn da steh Kompilieren abgeschlossen das alles okay ist

Dann hast Du nur den halben Code geliefert - denn:

Also muss die Funktion irgendwo versteckt sein.
Und siehe da....

Habe ich nicht - Wetten: Du hast einen tab - den solltest mitliefern.

ach wird der tab nicht automatisch hochgeladen?

Siehst Du ihn irgendwo?

Gruß Tommy

in der ide software sehe ich einen tab