Go Down

Topic: Desplazar texto en matriz de LED 8x8 con MAX7219 (Read 4016 times) previous topic - next topic

danigom

Jun 03, 2013, 09:46 pm Last Edit: Jun 03, 2013, 10:08 pm by danigom Reason: 1
Buenos días a todos, soy nuevo por aquí pero no he encontrado exactamente el subforo de presentaciones, si alguien es tan amable de decírmelo se lo agradecería.

El motivo que me ha traído hasta aquí es que llevo varios días intentando hacer un desplazamiento de texto en una matriz de LED 8x8 utilizando para el multiplexado un MAX7219 utilizando un Arduino UNO R3. El problema lo tengo en la parte software.

Las conexiones las he hecho de la siguiente forma:


Con respecto al software, he utilizado la librería "LedControl.h" y el problema que tengo es que lo que consigo es que cada letra aparezca y desaparezca por completo en la matriz, pero de forma independiente. Lo que estoy buscando es que haya una separación entre letras de 2 o 3 columnas y no de la matriz completa.  ¿Alguien puede darme un poco de luz en esto?

Creo que no es necesario, pero aquí dejo un video del resultado que obtengo con esto:

http://youtu.be/hPJ8MQTH2i0

Mi Sketch es el siguiente:

Code: [Select]
//We always have to include the library
#include "LedControl.h"

//pin 12 is connected to the DataIn
//pin 11 is connected to the CLK
//pin 10 is connected to LOAD

//LedControl(int dataPin, int clkPin, int csPin, int numDevices);
LedControl lc=LedControl(12,11,10,1);

void setup() {
 //The MAX72XX is in power-saving mode on startup, we have to do a wakeup call  
 lc.shutdown(0,false);
 //Set the brightness to a medium values (0~15 possible values)
 lc.setIntensity(0,2);
 //and clear the display
 lc.clearDisplay(0);
}

#define SP {0, 0, 0, 0, 0}               //Espacio
#define EX {0, 125, 0, 0, 0}             //Exclamacion !
#define A {31, 36, 68, 36, 31}
#define B {127, 73, 73, 73, 54,}
#define C {62, 65, 65, 65, 34}
#define D {127, 65, 65, 34, 28}
#define E {127, 73, 73, 65, 65}
#define F {127, 72, 72, 72, 64}
#define G {62, 65, 65, 69, 38}
#define H {127, 8, 8, 8, 127}
#define I {0, 65, 127, 65, 0}
#define J {2, 1, 1, 1, 126}
#define K {127, 8, 20, 34, 65}
#define L {127, 1, 1, 1, 1}
#define M {127, 32, 16, 32, 127}
#define N {127, 32, 16, 8, 127}
#define O {62, 65, 65, 65, 62}
#define P {127, 72, 72, 72, 48}
#define Q {62, 65, 69, 66, 61}
#define R {127, 72, 76, 74, 49}
#define S {50, 73, 73, 73, 38}
#define T {64, 64, 127, 64, 64}
#define U {126, 1, 1, 1, 126}
#define V {124, 2, 1, 2, 124}
#define W {126, 1, 6, 1, 126}
#define X {99, 20, 8, 20, 99}
#define Y {96, 16, 15, 16, 96}
#define Z {67, 69, 73, 81, 97}

//Escribimos la frase separando cada letra por comas
//En el primer numero lo adaptaremos la longitud de la frase (caracteres)
byte frase[5][5]={H,O,L,A,SP};
int largo = sizeof(frase)/5;
int gnd[18]={-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10,11,12};

void loop() {

 for (int letra=0; letra<largo; letra++){
   for (int desplaza = 18; desplaza>=5; desplaza--) {
     for (int i=0; i<5; i++){
       lc.setRow(0,gnd[i+desplaza-5],frase[letra][i]);
     }
   delay(100); // speed of animation
   lc.clearDisplay(0);
   }
   if(letra == largo){
   letra = 0;}
 }//end for letra  

}


Un saludo y muchas gracias!!!

arduinoadrian

No tengo la matrix de LEDs que muestras y no puedo hacer pruebas; pero creo que el problema esta aqui:

  for (int letra=0; letra<largo; letra++){
    for (int desplaza = 18; desplaza>=5; desplaza--) {
      for (int i=0; i<5; i++){

Yo juagaria con las variables de los "for" para ver los resultados y asi quizas encuentres donde esta el problema. Fundamentalmente el 18, que no se porque lo pones si tu matrix es de 8 columnas ???
Perseverance is 90% of the solution. The remaining 10% is more perseverance.

Go Up