Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /********** Proyecto **********
- * Laboratorio 10
- * Autor: Josue Mauricio Hurtado Mosquera
- * Descripcion:
- * Mostrar un mensaje desplazándose de izquierda a derecha en una matriz LED 8x8 a través de IC MAX7219 enviado desde un Arduino,
- * pueden usar una interfaz Processing.
- */
- // incliur libreria
- #include "LedControl.h"
- int DataPin = 9; //pin 9 conectado a DataIn
- int ClockPin = 10; //pin 10 conectado a CLK
- int LatchPIN = 8; //pin 8 conectado a LOAD/CS
- LedControl lc=
- LedControl(DataPin,ClockPin,LatchPIN,1); // se deteminan los pines de
- // comunicacion con el IC
- char cadena[100]; // se inicializa un arreglo de captacion de
- // caracteres desde la conexion serial
- byte posicion=0; // Variable para cambiar la posición de los caracteres del array
- char caracter[100];
- byte Letras [96][8]={ // Matriz de bytes donde se alojan las columnas de cada letra
- // y numero segun el codigo ASCII
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, //nada p0 -33
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, //espacio p1
- { 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00, 0x00, 0x00 }, //! p2
- { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00 }, //" p3
- { 0x00, 0x24, 0xFF, 0x24, 0xFF, 0x24, 0x00, 0x00 }, //# p4
- { 0x00, 0x48, 0x54, 0xFE, 0x54, 0x24, 0x00, 0x00 }, //$ p5
- { 0x00, 0x88, 0x40, 0x20, 0x10, 0x88, 0x00, 0x00 }, //% p6
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x7E, 0x91, 0x89, 0x85, 0x7E, 0x00, 0x00 }, //0 p17
- { 0x00, 0x00, 0x82, 0xFF, 0x80, 0x00, 0x00, 0x00 }, //1 p18
- { 0x00, 0xC2, 0xA1, 0x91, 0x89, 0x86, 0x00, 0x00 }, //2 p19
- { 0x00, 0x42, 0x81, 0x89, 0x89, 0x76, 0x00, 0x00 }, //3 p20
- { 0x00, 0x18, 0x14, 0x12, 0xFF, 0x10, 0x00, 0x00 }, //4 p21
- { 0x00, 0x4F, 0x89, 0x89, 0x89, 0x71, 0x00, 0x00 }, //5 p22
- { 0x00, 0x78, 0x94, 0x92, 0x91, 0x61, 0x00, 0x00 }, //6 p23
- { 0x00, 0x06, 0xF1, 0x09, 0x05, 0x03, 0x00, 0x00 }, //7 p24
- { 0x00, 0x76, 0x89, 0x89, 0x89, 0x76, 0x00, 0x00 }, //8 p25
- { 0x00, 0x0E, 0x91, 0x91, 0x51, 0x3E, 0x00, 0x00 }, //9 p26
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0xFE, 0x21, 0x21, 0x21, 0xFE, 0x00, 0x00 }, //A p34
- { 0x00, 0xFF, 0x89, 0x89, 0x89, 0x76, 0x00, 0x00 }, //B p35
- { 0x00, 0x7E, 0x81, 0x81, 0x81, 0x42, 0x00, 0x00 }, //C p36
- { 0x00, 0xFF, 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00 }, //D p37
- { 0x00, 0xFF, 0x89, 0x89, 0x89, 0x89, 0x00, 0x00 }, //E p38
- { 0x00, 0xFF, 0x09, 0x09, 0x09, 0x01, 0x00, 0x00 }, //F p39
- { 0x00, 0x7E, 0x81, 0x91, 0x91, 0x72, 0x00, 0x00 }, //G p40
- { 0x00, 0xFF, 0x08, 0x08, 0x08, 0xFF, 0x00, 0x00 }, //H p41
- { 0x00, 0x81, 0x81, 0xFF, 0x81, 0x81, 0x00, 0x00 }, //I p42
- { 0x00, 0x70, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00 }, //J p43
- { 0x00, 0xFF, 0x18, 0x24, 0x42, 0x81, 0x00, 0x00 }, //K p44
- { 0x00, 0xFF, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00 }, //L p45
- { 0x00, 0xFF, 0x02, 0x0C, 0x02, 0xFF, 0x00, 0x00 }, //M p46
- { 0x00, 0xFF, 0x02, 0x0C, 0x10, 0xFF, 0x00, 0x00 }, //N p47
- { 0x00, 0x7E, 0x81, 0x81, 0x81, 0x7E, 0x00, 0x00 }, //O p48
- { 0x00, 0xFF, 0x11, 0x11, 0x11, 0x0E, 0x00, 0x00 }, //P p49
- { 0x00, 0x7E, 0x81, 0xA1, 0x41, 0xBE, 0x00, 0x00 }, //Q p50
- { 0x00, 0xFF, 0x11, 0x31, 0x51, 0x8E, 0x00, 0x00 }, //R p51
- { 0x00, 0x86, 0x89, 0x89, 0x89, 0x71, 0x00, 0x00 }, //S p52
- { 0x00, 0x01, 0x01, 0xFF, 0x01, 0x01, 0x00, 0x00 }, //T p53
- { 0x00, 0x7F, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00 }, //U p54
- { 0x00, 0x0F, 0x30, 0xC0, 0x30, 0x0F, 0x00, 0x00 }, //V p55
- { 0x00, 0xFF, 0x40, 0x30, 0x40, 0xFF, 0x00, 0x00 }, //W p56
- { 0x00, 0xC3, 0x24, 0x18, 0x24, 0xC3, 0x00, 0x00 }, //X p57
- { 0x00, 0x07, 0x08, 0xF0, 0x08, 0x07, 0x00, 0x00 }, //Y p58
- { 0x00, 0xC1, 0xA1, 0x99, 0x85, 0x83, 0x00, 0x00 }, //Z p59
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // null
- { 0x00, 0x60, 0x94, 0x94, 0x94, 0xF8, 0x00, 0x00 }, //a p66
- { 0x00, 0xFF, 0x90, 0x88, 0x88, 0x70, 0x00, 0x00 }, //b p67
- { 0x00, 0x78, 0x84, 0x84, 0x84, 0x48, 0x00, 0x00 }, //c p68
- { 0x00, 0x70, 0x88, 0x88, 0x90, 0xFF, 0x00, 0x00 }, //d p69
- { 0x00, 0x70, 0xA8, 0xA8, 0xA8, 0x30, 0x00, 0x00 }, //e p70
- { 0x00, 0x10, 0xFE, 0x11, 0x01, 0x02, 0x00, 0x00 }, //f p71
- { 0x00, 0x0C, 0x92, 0x92, 0x92, 0x7E, 0x00, 0x00 }, //g p72
- { 0x00, 0xFF, 0x10, 0x08, 0x08, 0xF0, 0x00, 0x00 }, //h p73
- { 0x00, 0x00, 0x00, 0xFA, 0x00, 0x00, 0x00, 0x00 }, //i p74
- { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00, 0x00, 0x00 }, //j p75
- { 0x00, 0xFF, 0x20, 0x50, 0x88, 0x00, 0x00, 0x00 }, //k p76
- { 0x00, 0x00, 0x81, 0xFF, 0x80, 0x00, 0x00, 0x00 }, //l p77
- { 0x00, 0xFC, 0x04, 0x18, 0x04, 0xF8, 0x00, 0x00 }, //m p78
- { 0x00, 0xFC, 0x08, 0x04, 0x04, 0xF8, 0x00, 0x00 }, //n p79
- { 0x00, 0x78, 0x84, 0x84, 0x84, 0x78, 0x00, 0x00 }, //o p80
- { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18, 0x00, 0x00 }, //p p81
- { 0x00, 0x08, 0x14, 0x14, 0x18, 0xFC, 0x00, 0x00 }, //p p82
- { 0x00, 0xF8, 0x10, 0x08, 0x08, 0x10, 0x00, 0x00 }, //r p83
- { 0x00, 0x90, 0xA8, 0xA8, 0xA8, 0x40, 0x00, 0x00 }, //s p84
- { 0x00, 0x04, 0x7F, 0x84, 0x80, 0x40, 0x00, 0x00 }, //t p85
- { 0x00, 0x78, 0x80, 0x80, 0x40, 0xF8, 0x00, 0x00 }, //u p86
- { 0x00, 0x38, 0x40, 0x80, 0x40, 0x38, 0x00, 0x00 }, //v p87
- { 0x00, 0x78, 0x80, 0x70, 0x80, 0x78, 0x00, 0x00 }, //w p88
- { 0x00, 0x88, 0x50, 0x20, 0x50, 0x88, 0x00, 0x00 }, //x p89
- { 0x00, 0x00, 0x9C, 0xA0, 0xA0, 0x7C, 0x00, 0x00 }, //y p90
- { 0x00, 0x88, 0xC8, 0xA8, 0x98, 0x88, 0x00, 0x00 }, //z p91
- { 0x00, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, 0x00 }, //flecha I p92
- { 0x00, 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, 0x00 }, //flecha D p93
- { 0x00, 0x12, 0x2A, 0x7F, 0x2A, 0x24, 0x00, 0x00 }, //$
- { 0x00, 0x40, 0x82, 0x90, 0x82, 0x40, 0x00, 0x00 }, //smile p95
- };
- void setup() {
- /* el MAX7219 esta en modo Power-saving cuando se
- inicia, se debe sacar de ese estado*/
- lc.shutdown(0,false); // se sale de estado bajo consumo
- lc.setIntensity(0,4); // configurar brillo a nivel medio
- lc.clearDisplay(0); // limpiar pantalla
- Serial.begin(9600); // Inicializar comunicacion Serial
- }
- void loop() {
- if(Serial.available()) //Nos dice si hay datos dentro del buffer
- {
- memset(cadena, 0,sizeof(cadena)); //memset borra el contenido del array "cadena"
- //desde la posición 0 hasta el final sizeof
- while(Serial.available()>0) //Mientras haya datos en el buffer ejecuta la función
- {
- delay(5); //Poner un pequeño delay para mejorar la recepción de datos
- cadena[posicion]=Serial.read(); //Lee un carácter del string "cadena" de la "posicion",
- //luego lee el siguiente carácter con "posicion++"
- posicion++; // incremento de la variable "posicion"
- }
- Serial.println(int(cadena)+" "); // Revisamos letra escrita
- posicion=0; // Ponemos la posicion a 0
- }
- lc.setRow(0,0,0); // cursor en la posicion 0
- int mensaje[200]; // se crea variable que indica el numero...
- // de columnas a crear en el arreglo final
- int p = 0; // variable de conteo para el bucle de posicion
- for (int i=0; i<8; i++) // Se escribe un espacio de 8x8 libre para dejar...
- mensaje[p++]=0x00; // un espacio en el mensaje (8 col vacias)
- for (int i=0; i<sizeof(cadena); i++){ // Este bucle ubica cada letra en el arreglo cadena..
- // en el cual se escriben los 8 bytes de cada letra...
- for (int j=0; j<6; j++) { // recibida, hasta que se encuentra con una casilla vacia...
- if(cadena[i]==0){ // y se sale subitamente del bucle.
- break;
- }
- else{ // Si encuentra caracteres busca el caracter determinado en la matriz
- int l = int(cadena[i]) - 31; // y escribe sus 8 columnas en el arreglo mensaje
- mensaje[p++] = Letras[l][j];
- Serial.println(l); // se verifica el numero escojido en el arreglo
- }
- }
- }
- for (int i=0; i<8; i++) // Se escribe un espacio de 8x8 libre para dejar...
- mensaje[p++]=0x00; // otro espacio libre al final del arreglo mensaje
- for (int i=0; i<p-8 ; i++) { // Este bucle se encarga de trasladar la visualizacion....
- for (int j=i; j<i+8; j++) { // mostrando 8 columnas por cada pantallazo determinado por (p-8)...
- lc.setRow(0, j-i, mensaje[j]); // y refresca cada uno moviendo la visualizacion una posicion a...
- } // traves de j-1
- delay(100); // Retardo de visualizacion
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement