Error en codigo

Buenas tardes a todas las comunidad:

Tengo este código, el cual debe manejar 2 paneles led 32x8 con frases distintas, el problema que tengo, que en el pin 8 va genial pero el pin 9 no ilumina nada, he revisado el código y lo he modificado, pero sigo teniendo el mismo problema.

Gracias de antemano

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

// DATA PINS

#define DATA_PIN_PANEL1 8
#define DATA_PIN_PANEL2 9

#define arr_len( x )  ( sizeof( x ) / sizeof( *x ) )

// Matrix setup params
Adafruit_NeoMatrix matrix1 = Adafruit_NeoMatrix(32, 8, DATA_PIN_PANEL1,
NEO_MATRIX_TOP    + NEO_MATRIX_LEFT +
NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE + NEO_MATRIX_ZIGZAG,
NEO_GRB            + NEO_KHZ800);

Adafruit_NeoMatrix matrix2 = Adafruit_NeoMatrix(32, 8, DATA_PIN_PANEL2,
NEO_MATRIX_TOP    + NEO_MATRIX_LEFT +
NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE + NEO_MATRIX_ZIGZAG,
NEO_GRB            + NEO_KHZ800);

// Edit this
// The important stuff, your message and colors

char* Text1[] = {"PRUEBA 1"};
char* Text2[] = {"PRUEBA 2"};
const uint16_t colors1[] = {matrix1.Color(255, 215, 0)};
const uint16_t colors2[] = {matrix2.Color(255, 0, 255)};
int brightness = 60;
// End Edit

int numMode1 = arr_len(Text1) - 1;
int numMode2 = arr_len(Text2) - 1;
int numColor1 = arr_len(colors1) - 1;
int numColor2 = arr_len(colors2) - 1;
int pixelPerChar = 4;
int maxDisplacement1;
int maxDisplacement2;
int mode1 = 0;
int mode2 = 0;

void setup() {
  matrix1.begin();
  matrix1.setTextWrap(false);
  matrix1.setBrightness(brightness);
  matrix1.setTextColor(colors1[0]);

  matrix2.begin();
  matrix2.setTextWrap(false);
  matrix2.setBrightness(brightness);
  matrix2.setTextColor(colors2[0]);
}

int y1 = matrix1.height();
int x1 = matrix1.width();
int pass1 = 0;
int line_pass1 = 0;

int y2 = matrix2.height();
int x2 = matrix2.width();
int pass2 = 0;
int line_pass2 = 0;

void loop() {
  // if mode greater than numMode reset
  if (mode1 > numMode1) {
    mode1 = 0;
  }
  if (mode2 > numMode2) {
    mode2 = 0;
  }

  matrix1.fillScreen(0);
  matrix2.fillScreen(0);

  matrix1.setCursor(x1, 0);
  matrix2.setCursor(x2, 0);

  scroll(&matrix1, Text1[mode1], 10, x1);
  scroll(&matrix2, Text2[mode2], 10, x2);
}

// this does the magic of scrolling
void scroll(Adafruit_NeoMatrix* matrix, char* message, int delays, int &x) {
  int maxDisplacement = strlen(message) * pixelPerChar + matrix->width();
  if (++line_pass1 > matrix->width()) line_pass1 = 0;
  matrix->print(String(message));
  if (--x < -maxDisplacement) {
    x = matrix->width();
    if (++pass1 >= numColor1) {
      pass1 = 0;
    };
    matrix->setTextColor(colors1[pass1]);
    mode1++;
  }
  matrix->show();
  delay(100);
}

¿Qué Arduino estás usando?

Hi,
Haz tratado de intercambiar los pines de los panales. Asi sabes si el segundo paael no tiene problemas.

Arduino uno, he cambiado de pines, de Arduino y nada

Tauro0221 si he hice la prueba con un panel sacando el din del pin 8 y poniéndolo en el 9 y aún así tampoco

El simulador WOKWI.COM también muestra que el pin 9 no funciona, por lo que el error está en el código (una asignación de pin)

Y como puedo solucionarlo no veo el error

Creo que el problema es la "falta de memoria de Uno". Al compilar el boceto, ¿qué dice la ventana de salida?

No sé si lo hice bien, lo miré una vez y no me daba nada en la ventana ni el pin 8 ni el 9, si crees que es memoria,¿ deberia comprarme el Arduino mega?

Probablemente no sea un problema de memoria. Muestre su salida. Se verá así:

Sketch uses 10456 bytes (34%) of program storage space. Maximum is 30720 bytes.
Global variables use 380 bytes (18%) of dynamic memory, leaving 1668 bytes for local variables. Maximum is 2048 bytes.

El problema probablemente esté en no enviar a matrix2.
Necesitas "matrix.show()" tanto para matrix1 como para matrix2

Voy a mirar a ver qué veo, y compruebo lo que me comentas. Y comentó el resultado

Gracias

No alcanza la memoria de un UNO.
Solo con una matriz quedan disponibles unos 700 bytes (en tiempo de corrida), evidentemente no queda memoria para la segunda matriz.

Gracias, entoces necesitaría el mega ¿No es así?

Lo acabo de simular en una Mega y corre sin problemas.

Una Mega, ESP32, Raspberry Pi Pico, Bluepill. Cualquiera con más RAM.
Con la Mega no necesitas hacer ninguna modificación al código, esa es la única ventaja (la desventaja es el precio)

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