Go Down

Topic: Modulos para paneles LED publicitarios (Read 803 times) previous topic - next topic

DOMPA

Nov 13, 2019, 05:04 pm Last Edit: Nov 13, 2019, 05:19 pm by DOMPA
Hola Chicos/as.

Me han regalado 25 modulos para paneles LED RGB. Tienen 32 X 16 LEDs cada uno.
Me pregunto si puedo convertirlos de alguna manera para manejarlos con Arduino.
Mi impresión es que no, ya que cada modulo, está lleno de integrados y microcontroladores.

Mi idea bruta es localizar donde van cada contacto de cada led (16x32) y no se como, agruparlos para hacerlos funcionar desde arduino.
No tengo forma de conseguir la placa original que los maneja. Por eso, creo que solo podría aprovechar los leds.
Alguna sugerencia antes de tirar todo a la basura ??'
Adjunto unas fotos para que veáis de que se trata. Estaban montados en un panel publicitario de 7x5 módulos como los que yo tengo...






Saludos.

DOMPA

#1
Nov 13, 2019, 05:20 pm Last Edit: Nov 13, 2019, 05:25 pm by DOMPA
Como no me deja subir mas fotos al post, las añado aquí.




https://forum.arduino.cc/index.php?action=dlattach;topic=647854.0;attach=332835


DOMPA

Hola

Por si alguien busca lo mismo....He encontrado una huella por donde seguir buscando...
Escribiendo en google "dmd led arduino" en imagenes, ya aparecen bastantes fotos de algunos parecidos al mio...
Duda que me surge al instante: ¿Mis módulos funcionan como esos de las fotos??...Quiero decir que si con conectar el arduino a mi modulo como lo conectan ellos, ya funciona ???' Uhhmmm, sería demasiado facil...

Las entradas que yo tengo son: R0-U0-R1-U1-A-C-CLK-OE-G0-GND-B-GND-STB-GND....



Saludos.

victorjam

Yo no los tiraría. Mas siendo 25... por lo menos los pondría a la venta en ebay o similar.

Eso si, antes un poco de ingenieria inversa. Hay alguna información relativa a modelos similares, poniendo en google "32x16 PH10 panel" me sale algún que otro enlace como este en SPARKFUN.

Solo habría que ir probando a ver si damos con el modelo exacto. O ver como funcionan los anteriores y supongo que este será muy similar, aunque con alguna diferencia.

Pablo_Lucini

Dompa. Me arriesgaría a decir que son prácticamente iguales a los módulos P10 que suelen conseguirse. Podrías probar con la librería DMD de Freetronic, o al menos chequear si tiene el mismo pinout el conector, pero me parece que sí. Buscá DMD P10 en el forum que hay bastante info

DOMPA

Hola chicos, gracias.

Efectivamente, en sparkfun he encontrado algo...
después de mucho modificar los códigos, he conseguido hacer funcionar bien uno de ellos.
Ahora sigo buscando como unir varias lineas y columnas...
De momento toca comprar un MEGA, el UNO es pequeño para más de 16X32.

La librería es RGBmatrixPanel.h

Sigo enredando a ver si consigo unirlos entre ellos...
Gracias

DOMPA

Caray, efectivamente Freetronic tiene otra librería y en uno de sus enlaces indica como encadenar varios paneles..
Gracias

DOMPA

Buenos días.
Funcionando un panel, con texto scrolling y bolas bailando (Las lineas de las bolas, las he comentado // para simplificar las primeras pruebas...Partiendo de ese codigo, se pueden hacer pruebas y modificaciones.
Mientras me llega el MEGA que he pedido, voy a intentar que pase la hora y fecha, scrolling en vez del texto añadiendo un reloj DS3231.
De momento, subo el código que uso, por si alguien quiere probar.
Yo uso un NANO o UNO con este mismo codigo. Para MEGA u otros, hay que modificar el código:

Code: [Select]
// Most of the signal pins are configurable, but the CLK pin has some
// special constraints.  On 8-bit AVR boards it must be on PORTB...
// Pin 8 works on the Arduino Uno & compatibles (e.g. Adafruit Metro),
// Pin 11 works on the Arduino Mega.  On 32-bit SAMD boards it must be
// on the same PORT as the RGB data pins (D2-D7)...
// Pin 8 works on the Adafruit Metro M0 or Arduino Zero,
// Pin A4 works on the Adafruit Metro M4 (if using the Adafruit RGB
// Matrix Shield, cut trace between CLK pads and run a wire to A4).

#include <RGBmatrixPanel.h>


#define CLK  8   // USE THIS ON ARDUINO UNO, ADAFRUIT METRO M0, etc.
//#define CLK A4 // USE THIS ON METRO M4 (not M0)
//#define CLK 11 // USE THIS ON ARDUINO MEGA
#define OE   9
#define LAT 10
#define A   A0
#define B   A1
#define C   A2

// Last parameter = 'true' enables double-buffering, for flicker-free,
// buttery smooth animation.  Note that NOTHING WILL SHOW ON THE DISPLAY
// until the first call to swapBuffers().  This is normal.
RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, true);
// Double-buffered mode consumes nearly all the RAM available on the
// Arduino Uno -- only a handful of free bytes remain.  Even the
// following string needs to go in PROGMEM:

// Similar to F(), but for PROGMEM string pointers rather than literals
#define F2(progmem_ptr) (const __FlashStringHelper *)progmem_ptr

const char str[] PROGMEM = "HOLA QUE TAL ?";
int16_t    textX         = matrix.width(),
           textMin       = sizeof(str) * -12,
           hue           = 0;
//int8_t ball[3][4] = {
//  {  3,  0,  1,  1 }, // Initial X,Y pos & velocity for 3 bouncy balls
//  { 17, 15,  1, -1 },
//  { 27,  4, -1,  1 }
//};
static const uint16_t PROGMEM ballcolor[3] = {
  0x0080, // Green=1
  0x0002, // Blue=1
  0x1000  // Red=1
};

void setup() {
  matrix.begin();
  matrix.setTextWrap(false); // Allow text to run off right edge
  matrix.setTextSize(2);
}

void loop() {
  byte i;

  // Clear background
  matrix.fillScreen(0);

  // Bounce three balls around
  for(i=0; i<3; i++) {
    // Draw 'ball'
//    matrix.fillCircle(ball[i][0], ball[i][1], 5, pgm_read_word(&ballcolor[i]));
    // Update X, Y position
//    ball[i][0] += ball[i][2];
//    ball[i][1] += ball[i][3];
    // Bounce off edges
//    if((ball[i][0] == 0) || (ball[i][0] == (matrix.width() - 1)))
//      ball[i][2] *= -1;
//    if((ball[i][1] == 0) || (ball[i][1] == (matrix.height() - 1)))
//      ball[i][3] *= -1;
  }

  // Draw big scrolly text on top
  matrix.setTextColor(matrix.ColorHSV(hue, 255, 255, true));
  matrix.setCursor(textX, 1);
  matrix.print(F2(str));

  // Move text left (w/wrap), increase hue
  if((--textX) < textMin) textX = matrix.width();
  hue += 7;
  if(hue >= 1536) hue -= 1536;

#if !defined(__AVR__)
  // On non-AVR boards, delay slightly so screen updates aren't too quick.
  delay(20);
#endif

  // Update display
  matrix.swapBuffers(false);
}


Saludos

DOMPA

#8
Nov 20, 2019, 10:25 am Last Edit: Nov 20, 2019, 10:27 am by DOMPA
He leído en la red que para usar DS3231 y panel 16x32 hace falta al menos un Arduino MEGA por necesidad de cierta RAM.
He probado con DS3231 +UNO y no muestra nada. Hoy probaré DS3231+MEGA.
Es curioso que tengo ahora mismo funcionando el panel 16x32+NANO y funciona con el mismo codigo que para UNO. Lo desaconsejan en los tutoriales que he visto, con lo cual tengo el extintor al lado esperando el chispazo en cualquier momento....

Seguiré probando añadiendo el DS3231 y varios paneles en linea.
Espero que a alguien le sirva todo esto.


Saludos

tauro0221

Hi,
Cuando usastes el arduino usastes los pin 4 = SDA y el 5  =clock. Si no te trabaja es posible que estes usando los pines incorrectos o los tengas mal conectados en el modulo del clock.

surbyte

Mi amigo, el mismo codigo funciona con cualqueir micro, solo debes respetar los pines I2C en cada placa. nada mas y seleccionar la placa al momento de subir el sketch.

Esto

Quote
He leído en la red que para usar DS3231 y panel 16x32 hace falta al menos un Arduino MEGA por necesidad de cierta RAM.
Es una afirmación sin fundamento, que proviene de sitios escritos por gente que asevera cosas que no son ciertas.
Un RTC y un LCd pueden usarse en cualquier Arduino.

Pablo_Lucini

Dompa. Con un Arduino Uno te sobra para un rtc y varios paneles. Yo he realizado con un Uno un reloj con temperatura y animaciones varias en 4 paneles P10 sin problemas. Te recomiendo la librería DMD de Freetronics ( no la DMD2 si queres scrolear texto ), anda muy bien y es sencilla. La única diferencia entre usar un panel sólo o varios es la fuente de alimentación de los paneles ( 5vcc y aprox. 3Amp c/u). Los paneles se van conectando en cadena uno con otro.

Go Up