Advertisement
Josueco

lab10

May 28th, 2015
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 10.59 KB | None | 0 0
  1. /********** Proyecto **********
  2.  * Laboratorio 10
  3.  * Autor: Josue Mauricio Hurtado Mosquera
  4.  * Descripcion:
  5.  * Mostrar un mensaje desplazándose de izquierda a derecha en una matriz LED 8x8 a través de IC MAX7219 enviado desde un Arduino,
  6.  * pueden usar una interfaz Processing.
  7.  */
  8. // incliur libreria
  9. #include "LedControl.h"
  10.  
  11. int DataPin = 9;       //pin 9 conectado a DataIn
  12. int ClockPin = 10;     //pin 10 conectado a CLK
  13. int LatchPIN = 8;      //pin 8 conectado a LOAD/CS
  14. LedControl lc=
  15.     LedControl(DataPin,ClockPin,LatchPIN,1); // se deteminan los pines de
  16.                                              // comunicacion con el IC
  17.  
  18. char cadena[100];     // se inicializa un arreglo de captacion de
  19.                       // caracteres desde la conexion serial
  20. byte posicion=0;      // Variable para cambiar la posición de los caracteres del array
  21.  
  22. char caracter[100];
  23.  
  24. byte Letras [96][8]={ // Matriz de bytes donde se alojan las columnas de cada letra
  25.                       // y numero segun el codigo ASCII
  26.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    //nada       p0    -33
  27.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    //espacio    p1
  28.   { 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x00 },    //!   p2
  29.   { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00 },    //"   p3  
  30.   { 0x00, 0x24, 0xFF, 0x24, 0xFF, 0x24, 0x00, 0x00 },    //#   p4  
  31.   { 0x00, 0x48, 0x54, 0xFE, 0x54, 0x24, 0x00, 0x00 },    //$   p5  
  32.   { 0x00, 0x88, 0x40, 0x20, 0x10, 0x88, 0x00, 0x00 },    //%   p6
  33.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  34.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  35.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  36.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  37.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  38.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  39.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  40.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  41.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  42.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  43.   { 0x00, 0x7E, 0x91, 0x89, 0x85, 0x7E, 0x00, 0x00 },    //0   p17
  44.   { 0x00, 0x00, 0x82, 0xFF, 0x80, 0x00, 0x00, 0x00 },    //1   p18  
  45.   { 0x00, 0xC2, 0xA1, 0x91, 0x89, 0x86, 0x00, 0x00 },    //2   p19
  46.   { 0x00, 0x42, 0x81, 0x89, 0x89, 0x76, 0x00, 0x00 },    //3   p20
  47.   { 0x00, 0x18, 0x14, 0x12, 0xFF, 0x10, 0x00, 0x00 },    //4   p21
  48.   { 0x00, 0x4F, 0x89, 0x89, 0x89, 0x71, 0x00, 0x00 },    //5   p22
  49.   { 0x00, 0x78, 0x94, 0x92, 0x91, 0x61, 0x00, 0x00 },    //6   p23
  50.   { 0x00, 0x06, 0xF1, 0x09, 0x05, 0x03, 0x00, 0x00 },    //7   p24
  51.   { 0x00, 0x76, 0x89, 0x89, 0x89, 0x76, 0x00, 0x00 },    //8   p25
  52.   { 0x00, 0x0E, 0x91, 0x91, 0x51, 0x3E, 0x00, 0x00 },    //9   p26
  53.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  54.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  55.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  56.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  57.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  58.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  59.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  60.   { 0x00, 0xFE, 0x21, 0x21, 0x21, 0xFE, 0x00, 0x00 },    //A   p34
  61.   { 0x00, 0xFF, 0x89, 0x89, 0x89, 0x76, 0x00, 0x00 },    //B   p35
  62.   { 0x00, 0x7E, 0x81, 0x81, 0x81, 0x42, 0x00, 0x00 },    //C   p36
  63.   { 0x00, 0xFF, 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00 },    //D   p37
  64.   { 0x00, 0xFF, 0x89, 0x89, 0x89, 0x89, 0x00, 0x00 },    //E   p38
  65.   { 0x00, 0xFF, 0x09, 0x09, 0x09, 0x01, 0x00, 0x00 },    //F   p39
  66.   { 0x00, 0x7E, 0x81, 0x91, 0x91, 0x72, 0x00, 0x00 },    //G   p40
  67.   { 0x00, 0xFF, 0x08, 0x08, 0x08, 0xFF, 0x00, 0x00 },    //H   p41
  68.   { 0x00, 0x81, 0x81, 0xFF, 0x81, 0x81, 0x00, 0x00 },    //I   p42
  69.   { 0x00, 0x70, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00 },    //J   p43
  70.   { 0x00, 0xFF, 0x18, 0x24, 0x42, 0x81, 0x00, 0x00 },    //K   p44
  71.   { 0x00, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00 },    //L   p45
  72.   { 0x00, 0xFF, 0x02, 0x0C, 0x02, 0xFF, 0x00, 0x00 },    //M   p46
  73.   { 0x00, 0xFF, 0x02, 0x0C, 0x10, 0xFF, 0x00, 0x00 },    //N   p47
  74.   { 0x00, 0x7E, 0x81, 0x81, 0x81, 0x7E, 0x00, 0x00 },    //O   p48
  75.   { 0x00, 0xFF, 0x11, 0x11, 0x11, 0x0E, 0x00, 0x00 },    //P   p49
  76.   { 0x00, 0x7E, 0x81, 0xA1, 0x41, 0xBE, 0x00, 0x00 },    //Q   p50
  77.   { 0x00, 0xFF, 0x11, 0x31, 0x51, 0x8E, 0x00, 0x00 },    //R   p51
  78.   { 0x00, 0x86, 0x89, 0x89, 0x89, 0x71, 0x00, 0x00 },    //S   p52
  79.   { 0x00, 0x01, 0x01, 0xFF, 0x01, 0x01, 0x00, 0x00 },    //T   p53
  80.   { 0x00, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00 },    //U   p54
  81.   { 0x00, 0x0F, 0x30, 0xC0, 0x30, 0x0F, 0x00, 0x00 },    //V   p55
  82.   { 0x00, 0xFF, 0x40, 0x30, 0x40, 0xFF, 0x00, 0x00 },    //W   p56
  83.   { 0x00, 0xC3, 0x24, 0x18, 0x24, 0xC3, 0x00, 0x00 },    //X   p57
  84.   { 0x00, 0x07, 0x08, 0xF0, 0x08, 0x07, 0x00, 0x00 },    //Y   p58
  85.   { 0x00, 0xC1, 0xA1, 0x99, 0x85, 0x83, 0x00, 0x00 },    //Z   p59
  86.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  87.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  88.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  89.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  90.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  91.   { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },    // null
  92.   { 0x00, 0x60, 0x94, 0x94, 0x94, 0xF8, 0x00, 0x00 },    //a   p66
  93.   { 0x00, 0xFF, 0x90, 0x88, 0x88, 0x70, 0x00, 0x00 },    //b   p67
  94.   { 0x00, 0x78, 0x84, 0x84, 0x84, 0x48, 0x00, 0x00 },    //c   p68
  95.   { 0x00, 0x70, 0x88, 0x88, 0x90, 0xFF, 0x00, 0x00 },    //d   p69
  96.   { 0x00, 0x70, 0xA8, 0xA8, 0xA8, 0x30, 0x00, 0x00 },    //e   p70
  97.   { 0x00, 0x10, 0xFE, 0x11, 0x01, 0x02, 0x00, 0x00 },    //f   p71
  98.   { 0x00, 0x0C, 0x92, 0x92, 0x92, 0x7E, 0x00, 0x00 },    //g   p72
  99.   { 0x00, 0xFF, 0x10, 0x08, 0x08, 0xF0, 0x00, 0x00 },    //h   p73
  100.   { 0x00, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00 },    //i   p74
  101.   { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00, 0x00, 0x00 },    //j   p75
  102.   { 0x00, 0xFF, 0x20, 0x50, 0x88, 0x00, 0x00, 0x00 },    //k   p76
  103.   { 0x00, 0x00, 0x81, 0xFF, 0x80, 0x00, 0x00, 0x00 },    //l   p77
  104.   { 0x00, 0xFC, 0x04, 0x18, 0x04, 0xF8, 0x00, 0x00 },    //m   p78
  105.   { 0x00, 0xFC, 0x08, 0x04, 0x04, 0xF8, 0x00, 0x00 },    //n   p79
  106.   { 0x00, 0x78, 0x84, 0x84, 0x84, 0x78, 0x00, 0x00 },    //o   p80
  107.   { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18, 0x00, 0x00 },    //p   p81
  108.   { 0x00, 0x08, 0x14, 0x14, 0x18, 0xFC, 0x00, 0x00 },    //p   p82
  109.   { 0x00, 0xF8, 0x10, 0x08, 0x08, 0x10, 0x00, 0x00 },    //r   p83
  110.   { 0x00, 0x90, 0xA8, 0xA8, 0xA8, 0x40, 0x00, 0x00 },    //s   p84
  111.   { 0x00, 0x04, 0x7F, 0x84, 0x80, 0x40, 0x00, 0x00 },    //t   p85
  112.   { 0x00, 0x78, 0x80, 0x80, 0x40, 0xF8, 0x00, 0x00 },    //u   p86
  113.   { 0x00, 0x38, 0x40, 0x80, 0x40, 0x38, 0x00, 0x00 },    //v   p87
  114.   { 0x00, 0x78, 0x80, 0x70, 0x80, 0x78, 0x00, 0x00 },    //w   p88
  115.   { 0x00, 0x88, 0x50, 0x20, 0x50, 0x88, 0x00, 0x00 },    //x   p89
  116.   { 0x00, 0x00, 0x9C, 0xA0, 0xA0, 0x7C, 0x00, 0x00 },    //y   p90
  117.   { 0x00, 0x88, 0xC8, 0xA8, 0x98, 0x88, 0x00, 0x00 },    //z   p91
  118.   { 0x00, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, 0x00 },    //flecha I  p92
  119.   { 0x00, 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, 0x00 },    //flecha D  p93
  120.   { 0x00, 0x12, 0x2A, 0x7F, 0x2A, 0x24, 0x00, 0x00 },    //$
  121.   { 0x00, 0x40, 0x82, 0x90, 0x82, 0x40, 0x00, 0x00 },    //smile  p95
  122.   };
  123.  
  124. void setup() {
  125.  
  126.   /* el MAX7219 esta en modo Power-saving cuando se
  127.    inicia, se debe sacar de ese estado*/
  128.   lc.shutdown(0,false);    // se sale de estado bajo consumo    
  129.   lc.setIntensity(0,4);    // configurar brillo a nivel medio
  130.   lc.clearDisplay(0);      // limpiar pantalla
  131.   Serial.begin(9600);      // Inicializar comunicacion Serial
  132. }
  133.  
  134. void loop() {
  135.  
  136.   if(Serial.available())                  //Nos dice si hay datos dentro del buffer
  137.   {
  138.    
  139.     memset(cadena, 0,sizeof(cadena));     //memset borra el contenido del array  "cadena"
  140.                                           //desde la posición 0 hasta el final sizeof
  141.  
  142.     while(Serial.available()>0)           //Mientras haya datos en el buffer ejecuta la función
  143.     {
  144.        delay(5);                          //Poner un pequeño delay para mejorar la recepción de datos
  145.        cadena[posicion]=Serial.read();    //Lee un carácter del string "cadena" de la "posicion",
  146.                                           //luego lee el siguiente carácter con "posicion++"
  147.        posicion++;                        // incremento de la variable "posicion"
  148.     }
  149.    
  150.     Serial.println(int(cadena)+" ");     // Revisamos letra escrita
  151.     posicion=0;                          // Ponemos la posicion a 0
  152.   }
  153.  
  154.   lc.setRow(0,0,0);                      // cursor en la posicion 0                    
  155.   int mensaje[200];                      // se crea variable que indica el numero...
  156.                                          // de columnas a crear en el arreglo final
  157.   int p = 0;                             // variable de conteo para el bucle de posicion
  158.  
  159.   for (int i=0; i<8; i++)                // Se escribe un espacio de 8x8 libre para dejar...
  160.     mensaje[p++]=0x00;                   // un espacio en el mensaje (8 col vacias)
  161.    
  162.   for (int i=0; i<sizeof(cadena); i++){  // Este bucle ubica cada letra en el arreglo cadena..
  163.                                          // en el cual se escriben los 8 bytes de cada letra...    
  164.      for (int j=0; j<6; j++) {           // recibida, hasta que se encuentra con una casilla vacia...
  165.         if(cadena[i]==0){                // y se sale subitamente del bucle.              
  166.         break;
  167.      }
  168.      else{                               // Si encuentra caracteres busca el caracter determinado en la matriz
  169.        int l = int(cadena[i]) - 31;      // y escribe sus 8 columnas en el arreglo mensaje
  170.        mensaje[p++] = Letras[l][j];      
  171.        Serial.println(l);                // se verifica el numero escojido en el arreglo
  172.      }
  173.     }
  174.   }
  175.  
  176.  
  177.   for (int i=0; i<8; i++)                // Se escribe un espacio de 8x8 libre para dejar...
  178.   mensaje[p++]=0x00;                     // otro espacio libre al final del arreglo mensaje
  179.    
  180.   for (int i=0; i<p-8 ; i++) {           // Este bucle se encarga de trasladar la visualizacion....
  181.     for (int j=i; j<i+8; j++) {          // mostrando 8 columnas por cada pantallazo determinado por (p-8)...
  182.       lc.setRow(0, j-i, mensaje[j]);     // y refresca cada uno moviendo la visualizacion una posicion a...
  183.     }                                    // traves de j-1
  184.    
  185.     delay(100);                          // Retardo de visualizacion
  186.   }
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement