Advertisement
Villalba2006

POST_65

Nov 29th, 2016
15,694
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 11.42 KB | None | 0 0
  1. /*  TITULO: Panel luminoso de Matrices LED 8x8 con driver MAX7219.
  2.  
  3.     AUTOR:
  4.    
  5.     MARIANO DEL CAMPO GARCÍA (@2016) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA
  6.     - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia
  7.     - TWITTER: https://twitter.com/MarianoCampoGa
  8.     - CORREO: marianodc83@gmail.com
  9.    
  10.    
  11.     DESCRIPCIÓN DEL PROGRAMA
  12.    
  13.     Con este programa vamos a visualizar mensajes de texto desplazandose de derecha a izquierda a través
  14.     de un panel luminoso compuesto por 4 matrices LED 8x8 con driver MAX7219.
  15.    
  16.    
  17.     ESQUEMA DE CONEXION
  18.    
  19.                                       +-----+
  20.          +----[PWR]-------------------| USB |--+
  21.          |                            +-----+  |
  22.          |         GND/RST2  [ ][ ]            |
  23.          |       MOSI2/SCK2  [ ][ ]  A5/SCL[ ] |
  24.          |          5V/MISO2 [ ][ ]  A4/SDA[ ] |  
  25.          |                             AREF[ ] |
  26.          |                              GND[ ] |
  27.          | [ ]N/C                    SCK/13[ ] |  
  28.          | [ ]IOREF                 MISO/12[ ] |  
  29.          | [ ]RST                   MOSI/11[ ]~|  
  30.          | [ ]3V3    +---+               10[ ]~|   Pin CLK del módulo MAX7219 (el de la derecha)
  31.          | [ ]5v    -| A |-               9[ ]~|   Pin CS del módulo MAX7219 (el de la derecha)
  32.          | [ ]GND   -| R |-               8[ ] |   Pin DIN del módulo MAX7219 (el de la derecha)
  33.          | [ ]GND   -| D |-                    |
  34.          | [ ]Vin   -| U |-               7[ ] |  
  35.          |          -| I |-               6[ ]~|  
  36.          | [ ]A0    -| N |-               5[ ]~|  
  37.          | [ ]A1    -| O |-               4[ ] |  
  38.          | [ ]A2     +---+           INT1/3[ ]~|  
  39.          | [ ]A3                     INT0/2[ ] |  
  40.          | [ ]A4/SDA  RST SCK MISO     TX>1[ ] |  
  41.          | [ ]A5/SCL  [ ] [ ] [ ]      RX<0[ ] |  
  42.          |            [ ] [ ] [ ]              |
  43.          |  UNO_R3    GND MOSI 5V  ____________/
  44.           \_______________________/
  45.  
  46.   NOTAS:
  47.  
  48.    - La alimentación del panel luminoso (VCC y GND) puede ir directamente conectada a los pines
  49.      +5V y GND de nuestro Arduino, aunque es recomendable alimentar el panel luminoso
  50.      mediante una fuente de alimentación de 5VDC/3000mA para evitar problemas en el puerto USB
  51.      de nuestro PC.
  52.    - Para conectar las 4 matrices LED 8x8 con driver MAX7219 en cascada, es suficiente con conectar
  53.      las salidas del módulo situado más a la derecha (el que hemos conectado a nuestro Arduino), a las
  54.      entradas del inmediatamente anterior (el de su izquierda) y así sucesivamente hasta llegar al
  55.      primer módulo, el cual deberá tener sus salidas desconectadas puesto que no se tiene que comunicar
  56.      con ninguno otro. Todos los módulos tienen que estar correctamente alimentados.    
  57. */
  58.  
  59.   // Librerías necesarias
  60.   #include <MaxMatrix.h>
  61.   #include <avr/pgmspace.h>
  62.  
  63.   // Definición de los caracteres
  64.   PROGMEM unsigned char const CH[] =
  65.   {
  66.   3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // space
  67.   1, 8, B01011111, B00000000, B00000000, B00000000, B00000000, // !
  68.   3, 8, B00000011, B00000000, B00000011, B00000000, B00000000, // "
  69.   5, 8, B00010100, B00111110, B00010100, B00111110, B00010100, // #
  70.   4, 8, B00100100, B01101010, B00101011, B00010010, B00000000, // $
  71.   5, 8, B01100011, B00010011, B00001000, B01100100, B01100011, // %
  72.   5, 8, B00110110, B01001001, B01010110, B00100000, B01010000, // &
  73.   1, 8, B00000011, B00000000, B00000000, B00000000, B00000000, // '
  74.   3, 8, B00011100, B00100010, B01000001, B00000000, B00000000, // (
  75.   3, 8, B01000001, B00100010, B00011100, B00000000, B00000000, // )
  76.   5, 8, B00101000, B00011000, B00001110, B00011000, B00101000, // *
  77.   5, 8, B00001000, B00001000, B00111110, B00001000, B00001000, // +
  78.   2, 8, B10110000, B01110000, B00000000, B00000000, B00000000, // ,
  79.   4, 8, B00001000, B00001000, B00001000, B00001000, B00000000, // -
  80.   2, 8, B01100000, B01100000, B00000000, B00000000, B00000000, // .
  81.   4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // /
  82.   4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // 0
  83.   3, 8, B01000010, B01111111, B01000000, B00000000, B00000000, // 1
  84.   4, 8, B01100010, B01010001, B01001001, B01000110, B00000000, // 2
  85.   4, 8, B00100010, B01000001, B01001001, B00110110, B00000000, // 3
  86.   4, 8, B00011000, B00010100, B00010010, B01111111, B00000000, // 4
  87.   4, 8, B00100111, B01000101, B01000101, B00111001, B00000000, // 5
  88.   4, 8, B00111110, B01001001, B01001001, B00110000, B00000000, // 6
  89.   4, 8, B01100001, B00010001, B00001001, B00000111, B00000000, // 7
  90.   4, 8, B00110110, B01001001, B01001001, B00110110, B00000000, // 8
  91.   4, 8, B00000110, B01001001, B01001001, B00111110, B00000000, // 9
  92.   2, 8, B01010000, B00000000, B00000000, B00000000, B00000000, // :
  93.   2, 8, B10000000, B01010000, B00000000, B00000000, B00000000, // ;
  94.   3, 8, B00010000, B00101000, B01000100, B00000000, B00000000, // <
  95.   3, 8, B00010100, B00010100, B00010100, B00000000, B00000000, // =
  96.   3, 8, B01000100, B00101000, B00010000, B00000000, B00000000, // >
  97.   4, 8, B00000010, B01011001, B00001001, B00000110, B00000000, // ?
  98.   5, 8, B00111110, B01001001, B01010101, B01011101, B00001110, // @
  99.   4, 8, B01111110, B00010001, B00010001, B01111110, B00000000, // A
  100.   4, 8, B01111111, B01001001, B01001001, B00110110, B00000000, // B
  101.   4, 8, B00111110, B01000001, B01000001, B00100010, B00000000, // C
  102.   4, 8, B01111111, B01000001, B01000001, B00111110, B00000000, // D
  103.   4, 8, B01111111, B01001001, B01001001, B01000001, B00000000, // E
  104.   4, 8, B01111111, B00001001, B00001001, B00000001, B00000000, // F
  105.   4, 8, B00111110, B01000001, B01001001, B01111010, B00000000, // G
  106.   4, 8, B01111111, B00001000, B00001000, B01111111, B00000000, // H
  107.   3, 8, B01000001, B01111111, B01000001, B00000000, B00000000, // I
  108.   4, 8, B00110000, B01000000, B01000001, B00111111, B00000000, // J
  109.   4, 8, B01111111, B00001000, B00010100, B01100011, B00000000, // K
  110.   4, 8, B01111111, B01000000, B01000000, B01000000, B00000000, // L
  111.   5, 8, B01111111, B00000010, B00001100, B00000010, B01111111, // M
  112.   5, 8, B01111111, B00000100, B00001000, B00010000, B01111111, // N
  113.   4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // O
  114.   4, 8, B01111111, B00001001, B00001001, B00000110, B00000000, // P
  115.   4, 8, B00111110, B01000001, B01000001, B10111110, B00000000, // Q
  116.   4, 8, B01111111, B00001001, B00001001, B01110110, B00000000, // R
  117.   4, 8, B01000110, B01001001, B01001001, B00110010, B00000000, // S
  118.   5, 8, B00000001, B00000001, B01111111, B00000001, B00000001, // T
  119.   4, 8, B00111111, B01000000, B01000000, B00111111, B00000000, // U
  120.   5, 8, B00001111, B00110000, B01000000, B00110000, B00001111, // V
  121.   5, 8, B00111111, B01000000, B00111000, B01000000, B00111111, // W
  122.   5, 8, B01100011, B00010100, B00001000, B00010100, B01100011, // X
  123.   5, 8, B00000111, B00001000, B01110000, B00001000, B00000111, // Y
  124.   4, 8, B01100001, B01010001, B01001001, B01000111, B00000000, // Z
  125.   2, 8, B01111111, B01000001, B00000000, B00000000, B00000000, // [
  126.   4, 8, B00000001, B00000110, B00011000, B01100000, B00000000, // \ backslash
  127.   2, 8, B01000001, B01111111, B00000000, B00000000, B00000000, // ]
  128.   3, 8, B00000010, B00000001, B00000010, B00000000, B00000000, // hat
  129.   4, 8, B01000000, B01000000, B01000000, B01000000, B00000000, // _
  130.   2, 8, B00000001, B00000010, B00000000, B00000000, B00000000, // `
  131.   4, 8, B00100000, B01010100, B01010100, B01111000, B00000000, // a
  132.   4, 8, B01111111, B01000100, B01000100, B00111000, B00000000, // b
  133.   4, 8, B00111000, B01000100, B01000100, B00101000, B00000000, // c
  134.   4, 8, B00111000, B01000100, B01000100, B01111111, B00000000, // d
  135.   4, 8, B00111000, B01010100, B01010100, B00011000, B00000000, // e
  136.   3, 8, B00000100, B01111110, B00000101, B00000000, B00000000, // f
  137.   4, 8, B10011000, B10100100, B10100100, B01111000, B00000000, // g
  138.   4, 8, B01111111, B00000100, B00000100, B01111000, B00000000, // h
  139.   3, 8, B01000100, B01111101, B01000000, B00000000, B00000000, // i
  140.   4, 8, B01000000, B10000000, B10000100, B01111101, B00000000, // j
  141.   4, 8, B01111111, B00010000, B00101000, B01000100, B00000000, // k
  142.   3, 8, B01000001, B01111111, B01000000, B00000000, B00000000, // l
  143.   5, 8, B01111100, B00000100, B01111100, B00000100, B01111000, // m
  144.   4, 8, B01111100, B00000100, B00000100, B01111000, B00000000, // n
  145.   4, 8, B00111000, B01000100, B01000100, B00111000, B00000000, // o
  146.   4, 8, B11111100, B00100100, B00100100, B00011000, B00000000, // p
  147.   4, 8, B00011000, B00100100, B00100100, B11111100, B00000000, // q
  148.   4, 8, B01111100, B00001000, B00000100, B00000100, B00000000, // r
  149.   4, 8, B01001000, B01010100, B01010100, B00100100, B00000000, // s
  150.   3, 8, B00000100, B00111111, B01000100, B00000000, B00000000, // t
  151.   4, 8, B00111100, B01000000, B01000000, B01111100, B00000000, // u
  152.   5, 8, B00011100, B00100000, B01000000, B00100000, B00011100, // v
  153.   5, 8, B00111100, B01000000, B00111100, B01000000, B00111100, // w
  154.   5, 8, B01000100, B00101000, B00010000, B00101000, B01000100, // x
  155.   4, 8, B10011100, B10100000, B10100000, B01111100, B00000000, // y
  156.   3, 8, B01100100, B01010100, B01001100, B00000000, B00000000, // z
  157.   3, 8, B00001000, B00110110, B01000001, B00000000, B00000000, // {
  158.   1, 8, B01111111, B00000000, B00000000, B00000000, B00000000, // |
  159.   3, 8, B01000001, B00110110, B00001000, B00000000, B00000000, // }
  160.   4, 8, B00001000, B00000100, B00001000, B00000100, B00000000, // ~
  161.   };
  162.  
  163.   int data = 8;    // Pin digital para el pin DIN del módulo MAX7219
  164.   int load = 9;    // Pin digital para el pin CS del módulo MAX7219
  165.   int clock = 10;  // Pin digital para el pin CLK del módulo MAX7219
  166.  
  167.   int maxInUse = 4;    // Cambie este valor dependiendo del número de matrices que conectes (máx.8)
  168.  
  169.   // Declaración del objeto para el módulo MAX7219
  170.   MaxMatrix m(data, load, clock, maxInUse);
  171.  
  172.   byte buffer[10];
  173.  
  174.   char mensaje1[] = "Bienvenidos al BLOG ... "; // Escriba el primer mensaje a desplegar
  175.   // Escriba el segundo mensaje a desplegar
  176.   char mensaje2[] = "www.miarduinounotieneunblog.blogspot.com ...";
  177.  
  178.   void setup()
  179.   {
  180.     pinMode(8,OUTPUT); // Pin digital 8 como salida
  181.     pinMode(9,OUTPUT); // Pin digital 9 como salida
  182.     pinMode(10,OUTPUT); // Pin digital 10 como salida
  183.     m.init(); // Inicializa el módulo MAX7219
  184.     m.setIntensity(1); // Intensidad luminosa de los puntos de la matriz (entre 1-5)
  185.   }
  186.  
  187.   void loop()
  188.   {
  189.     delay(100); // Tiempo de inicio de un nuevo Ciclo de mensajes
  190.     m.shiftLeft(false, true); // Desplazamiento del texto hacia la izquierda
  191.    
  192.     // Despliega los mensajes almacenados en las variables  
  193.     printStringWithShift(mensaje1, 50); // El último termino se usa para la velocidad del mensaje
  194.     printStringWithShift(mensaje2, 50);
  195.   }
  196.  
  197.   // Función para imprimir un carácter en el panel luminoso
  198.   void printCharWithShift(char c, int shift_speed)
  199.   {  
  200.     if (c < 32) return;
  201.     c -= 32;
  202.     memcpy_P(buffer, CH + 7*c, 7);
  203.     m.writeSprite(maxInUse*8, 0, buffer);
  204.     m.setColumn(maxInUse*8 + buffer[0], 0);
  205.    
  206.     for (int i=0; i<buffer[0]+1; i++)
  207.     {
  208.       delay(shift_speed);
  209.       m.shiftLeft(false, false);
  210.     }
  211.   }
  212.  
  213.   // Función para imprimir una cadena de caracteres en el panel luminoso
  214.   void printStringWithShift(char* s, int shift_speed)
  215.   {        
  216.     while (*s != 0)
  217.     {
  218.       printCharWithShift(*s, shift_speed);
  219.       s++;
  220.     }
  221.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement