Waveshare matrix 32x64 nicht mit uno

Hallo zusammen.

warum kann ich die Waveshare LED Matrix nicht mit einem ardiuno Uno betreiben?
Die pins 24-29 habe ich durch 8-3 ersetzt. Laut pinout von ardiono mega sollten es nur Digitale Pins ohne weiter Funktion sein.

Wenn du das so machst und die Pins im Sketch anpasst müsste funktionieren.
Auf 2 --> 6 wurde das sogar vorgesehen

Computer sagt nein. Hab die pins noch den farben auf dem bild angepasst, ergebnis = 0


#include <RGBmatrixPanel.h>
int block=1;
int r = 5;
bool rsw = true;

#define CLK 11 // USE THIS ON ARDUINO MEGA
#define OE   9
#define LAT 10
#define A   A0
#define B   A1
#define C   A2
#define D   A3


#define R1 5
#define G1 6
#define B1 7
#define R2 2
#define G2 3
#define B2 4
RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, false, 64);

void setup() {
  Reginit();
  matrix.begin();

  // draw a pixel in solid white
  matrix.drawPixel(0, 0, matrix.Color333(7, 7, 7));
  delay(100);
  matrix.fillScreen(matrix.Color333(0, 0, 0));

  // draw some text!
  matrix.setTextSize(1);     // size 1 == 8 pixels high
  matrix.setTextWrap(false); // Don't wrap at end of line - will do ourselves

  //matrix.setCursor(8, 2);    // start at top left, with 8 pixel of spacing
  //char *str = "Ruggiero";
  //matrix.setTextColor(matrix.Color333(1,1,1));
  //matrix.println(str);


}

void loop() {
  
  switch(block){
    case 1:
      matrix.setCursor(8, 10);
      matrix.setTextColor(matrix.Color333(r,0,2));
      matrix.println("Besetzt !");
      
    break;
    case 2:
      matrix.setCursor(5, 16);
      matrix.setTextColor(matrix.Color333(r,0,0));
      matrix.println("Komm rein");
    break;

  }

  if( rsw){
    r = 1+r;
  }
  else{
    r=r-1;
  }

  if(r >= 7){
    rsw=false;
  }
  else if(r <= 5){
    rsw=true;
  }
  delay(150);
}

//Reginit
void Reginit()
{
    //mega
    // pinMode(24, OUTPUT); //R1
    // pinMode(25, OUTPUT); //G1
    // pinMode(26, OUTPUT); //B1
    // pinMode(27, OUTPUT); //R2
    // pinMode(28, OUTPUT); //G2
    // pinMode(29, OUTPUT); //B2

    pinMode(R1, OUTPUT); //R1
    pinMode(G1, OUTPUT); //G1
    pinMode(B1, OUTPUT); //B1
    pinMode(R2, OUTPUT); //R2
    pinMode(G2, OUTPUT); //G2
    pinMode(B2, OUTPUT); //B2

    pinMode(CLK, OUTPUT);
    pinMode(OE, OUTPUT);
    pinMode(LAT, OUTPUT);

    digitalWrite(OE, HIGH);
    digitalWrite(LAT, LOW);
    digitalWrite(CLK, LOW);
    int MaxLed = 64;

    int C12[16] = {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
    int C13[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0};

    for (int l = 0; l < MaxLed; l++)
    {
        int y = l % 16;
        digitalWrite(R1, LOW);
        digitalWrite(G1, LOW);
        digitalWrite(B1, LOW);
        digitalWrite(G2, LOW);
        digitalWrite(G2, LOW);
        digitalWrite(B2, LOW);
        if (C12[y] == 1)
        {
          digitalWrite(R1, HIGH);
          digitalWrite(G1, HIGH);
          digitalWrite(B1, HIGH);
          digitalWrite(G2, HIGH);
          digitalWrite(G2, HIGH);
          digitalWrite(B2, HIGH);
        }
        if (l > MaxLed - 12)
        {
            digitalWrite(LAT, HIGH);
        }
        else
        {
            digitalWrite(LAT, LOW);
        }
        digitalWrite(CLK, HIGH);
        delayMicroseconds(2);
        digitalWrite(CLK, LOW);
    }
    digitalWrite(LAT, LOW);
    digitalWrite(CLK, LOW);

    // Send Data to control register 12
    for (int l = 0; l < MaxLed; l++)
    {
        int y = l % 16;
        digitalWrite(R1, LOW);
        digitalWrite(G1, LOW);
        digitalWrite(B1, LOW);
        digitalWrite(G2, LOW);
        digitalWrite(G2, LOW);
        digitalWrite(B2, LOW);
        if (C13[y] == 1)
        {
            digitalWrite(R1, HIGH);
            digitalWrite(G1, HIGH);
            digitalWrite(B1, HIGH);
            digitalWrite(G2, HIGH);
            digitalWrite(G2, HIGH);
            digitalWrite(B2, HIGH);
        }
        if (l > MaxLed - 13)
        {
            digitalWrite(LAT, HIGH);
        }
        else
        {
            digitalWrite(LAT, LOW);
        }
        digitalWrite(CLK, HIGH);
        delayMicroseconds(2);
        digitalWrite(CLK, LOW);
    }
    digitalWrite(LAT, LOW);
    digitalWrite(CLK, LOW);
}


// Input a value 0 to 24 to get a color value.
// The colours are a transition r - g - b - back to r.
uint16_t Wheel(byte WheelPos) {
  if(WheelPos < 8) {
   return matrix.Color333(7 - WheelPos, WheelPos, 0);
  } else if(WheelPos < 16) {
   WheelPos -= 8;
   return matrix.Color333(0, 7-WheelPos, WheelPos);
  } else {
   WheelPos -= 16;
   return matrix.Color333(WheelPos, 0, 7 - WheelPos);
  }
}

Warum verstümmelst du die Meldung bis zu Unkenntlichkeit?

Hier zu sehen: RGB-matrix-Panel/RGBmatrixPanel.cpp at master · adafruit/RGB-matrix-Panel · GitHub

Es werden 32*64*3=6144 Byte auf dem Heap benötigt.
Der Uno hat allerdings überhaupt nur 2k RAM.

Klartext:
Der Elefant passt leider nicht in die Butterdose.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.