Descripción del Laboratorio:
Materiales:
Diagrama del Montaje en la Protoboard (usando Fritzing):
No se encuentran elementos asociados en el programa para el modulo de la matriz, el IC MAX7219,
por tal motivo no se genera el montaje en la protoboard.
______________________________________________________
Diagrama Esquemático del Circuito (usando Fritzing):
No se encuentran elementos asociados en el programa para el modulo de la matriz y el IC MAX7219,
por tal motivo no se genera el montaje en la protoboard.
______________________________________________________
Proceso del Montaje paso a paso (Fotos):
- Arduino Shield de RED RJ45 y Arduino UNO:
- Ajustar de arriba hacia abajo hasta obtener un buen acople :
- Se realizan las conexiones correspondientes para el correcto funcionamento :
- Parte posterior del montaj:
- Montaje completo para el display LED de 8x8:
______________________________________________________
Código Fuente en Arduino (con comentarios)
- / ********** Proyecto **********
- * Universidad Santiago de Cali
- * *
- * Laboratorio 11: Envio de mensajes desde Arduino a una matriz LED 8X8,
- * usando un formulario web para enviar el mensaje.
- ¨ *
- * Autor: Daniel López Huertas
- * Descripción: Enviar desde un formulario web un mensaje a una matriz
- * LED 8x8 (desplazándose de izquierda a derecha) a través de IC MAX7219.
- * Versión 1
- Circuito:
- * Protección Ethernet conectada a los pines 10, 11, 12, 13
- * Entradas analógicas conectadas a los pines A0 a A5 (opcional)
- * /
- // librerias necesarias para el buen funcionamiento
- #include <SPI.h>
- #include <Ethernet.h>
- #include "LedControl.h"
- #define BUFSIZ 100 // Tamaño del búfer para obtener datos
- // definición de las direcciones MAC e IP.
- byte mac [ ] = { 0xDE , 0xAD , 0xBE , 0xEF , 0xFE , 0xED } ;
- IP Dirección IP ( 192 , 168 , 0 , 107 ) ;
- Servidor Ethernet Server ( 80 ) ;
- int data_in = 9 ; // se inicializa la variable data_in en el PIN 9
- int reloj = 7 ; // se inicializa la variable data_in en el PIN 7
- int cs = 8 ; // se inicializa la variable data_in en el PIN 8
- LedControl lc = LedControl ( data_in , clock , cs , 1 ) ; // se instacia un objeto de ledControl para utilizar los PINES
- / * siempre esperamos un poco entre actualizaciones de la pantalla * /
- tiempo de retraso largo sin signo = 100 ;
- configuración nula ( )
- {
- Ethernet comenzar ( mac , ip ) ;
- servidor. comenzar ( ) ;
- // pinMode (LED, SALIDA);
- De serie. comenzar ( 9600 ) ;
- / *
- El MAX72XX está en modo de ahorro de energía al inicio,
- tenemos que hacer una llamada de atención
- * /
- lc. apagado ( 0 , falso ) ;
- / * Establecer el brillo en valores medios * /
- lc. setIntensity ( 0 , 8 ) ;
- / * y borra la pantalla * /
- lc. clearDisplay ( 0 ) ;
- }
- bucle vacío ( )
- {
- línea de cliente char [ BUFSIZ ] ; // cadena que contendrá datos de comando
- int index = 0 ; // índice de línea de cliente
- int pos = 0 ;
- Cliente EthernetClient = servidor. disponible ( ) ;
- if ( cliente ) {
- boolean currentLineIsBlank = verdadero ;
- while ( cliente. conectado ( ) ) {
- if ( cliente. disponible ( ) ) {
- char c = cliente. leer ( ) ;
- if ( index < BUFSIZ ) // Solo agrega datos si el búfer no está lleno.
- línea de cliente [ índice ++ ] = c ;
- if ( c == ' \ n ' && currentLineIsBlank )
- {
- if ( ( pos = strstr ( clientline , "/? texto =" ) ! = 0 ) ) {
- // Extraer el mensaje despues del igual
- Cadena cadena = Cadena (línea de cliente ) ;
- Mensaje de cadena = cadena. subcadena ( pos + 11 , cadena. indexOf ( "" , pos + 11 ) ) ;
- De serie. imprimir ( mensaje ) ;
- // el método que muestra el mensaje en la pantalla
- writeArduinoOnMatrix ( mensaje ) ;
- }
- // envía un encabezado de respuesta http estándar
- cliente. println ( "HTTP / 1.1 200 OK" ) ;
- cliente. println ( "Tipo de contenido: texto / html" ) ;
- cliente. println ( "Conexión: cerrar" ) ; // la conexión se cerrará después de completar la respuesta
- // client.println ("Actualizar: 5"); // actualiza la página automáticamente cada 5 segundos
- cliente. println ( ) ;
- cliente. println ( "<! DOCTYPE HTML>" ) ;
- cliente. println ( "<html>" ) ;
- cliente. println ( "<head> <title> MATRIZ LED </title> </head>" ) ;
- cliente. println ( "<cuerpo>" ) ;
- cliente. println ( "<h1> LED MATRIZ <h1>" ) ;
- cliente. println ( "<form method = 'get'>" ) ;
- cliente. println ( "<label> texto de la Matriz: </label> <input type = 'text' name = 'texto' />" ) ;
- cliente. println ( "<input type = 'button' name = 'Matriz' value = 'Ingresar' onclick = 'submit ();' /> </form>" ) ;
- cliente. println ( "</body> </html>" ) ;
- //Serial.println(clientline);
- romper ;
- }
- if ( c == ' \ n ' ) {
- currentLineIsBlank = verdadero ;
- }
- otra cosa si ( c ! = ' \ r ' ) {
- currentLineIsBlank = false ;
- }
- }
- }
- retraso ( 1 ) ;
- cliente. detener ( ) ;
- }
- }
- // Arreglo con las letras en mayúscula, minusculas y números.
- byte letras [ 63 ] [ 5 ] = { { B11111110 , B00010001 , B00010001 , B00010001 , B11111110 } , // A
- { 0xFF , 0x89 , 0x89 , 0x89 , 0x76 } , // B
- { B01111110 , B10000001 , B10000001 , B10000001 , B01000110 } , // C
- { 0xff , 0x81 , 0x81 , 0x81 , 0x7e } , // D
- { 0x7e , 0x89 , 0x89 , 0x89 , 0x89 } , // E
- { 0xff , 0x09 , 0x09 , 0x09 , 0x01 } , // F
- { 0x7e , 0x89 , 0x89 , 0x89 , 0xf2 } , // G
- { 0xFF , 0x18 , 0x18 , 0x18 , 0xff } , // H
- { B00000000 , B10000100 , B11111101 , B10000000 , B00000000 } , // I
- { 0x71 , 0x81 , 0x7f , 0x01 , 0x01 } , // J
- { 0xff , 0x10 , 0x2C , 0x42 , 0x81 } , // K
- { 0x7f , 0xc0 , 0x80 , 0x80 , 0x80 } , // L
- { 0xff , 0x06 , 0x0c , 0x06 , 0xff } , // M
- { B11111111 , B00000100 , B00001000 , B00010000 , B11111111 } , // N
- { B01111110 , B10000001 , B10000001 , B10000001 , B01111110 } , // O
- { 0xff , 0x09 , 0x09 , 0x09 , 0x06 } , // P
- { 0xbe , 0x41 , 0xA1 , 0x81 , 0x7e } , // Q
- { B11111111 , B00010001 , B00110001 , B01010001 , B10001110 } , // R
- { 0x86 , 0x89 , 0x89 , 0x89 , 0x71 } , // S
- { 0x01 , 0x01 , 0xff , 0x01 , 0x01 } , // T
- { B01111111 , B11000000 , B11000000 , B11000000 , B01111111 } , // U
- { 0x3f , 0x40 , 0x80 , 0x40 , 0x3f } , // V
- { 0x7f , 0x80 , 0x70 , 0x80 , 0x7f } , // W
- { 0xe3 , 0x14 , 0x08 , 0x14 , 0xe3 } , // X
- { 0x03 , 0x04 , 0xf8 , 0x04 , 0x03 } , // S
- { 0xE1 , 0x91 , 0x89 , 0x85 , 0x83 } , // Z
- { 0xd68 , 0xd94 , 0xd94 , 0xd78 , 0xd80 } , // a
- { 0xdfc , 0xd60 , 0xd90 , 0xd90 , 0xd60 } , // b
- { 0xd78 , 0xd84 , 0xd84 , 0xd84 , 0x48 } , // c
- { 0xd60 , 0xd90 , 0xd90 , 0xd60 , 0xdfc } , // d
- { 0x78 , 0x94 , 0x94 , 0x94 , 0x58 } , // e
- { B11111100 , B00100100 , B00100100 , B00000100 , B00000100 } , // f
- { B00001000 , B10010100 , B10010100 , B10110100 , B01001000 } , // g
- { B11111100 , B00100000 , B00010000 , B00010000 , B11100000 } , // h
- { B00000000 , B00000000 , B11110100 , B00000000 , B00000000 } , // i
- { B10000000 , B10000000 , B01110100 , B00000000 , B00000000 } , // j
- { B11111100 , B00100000 , B01010000 , B10001000 , B00000000 } , // k
- { B00000000 , B00000000 , B11111100 , B10000000 , B00000000 } , // l
- { B11111100 , B00001000 , B11110000 , B00001000 , B11110000 } , // m
- { 0x78 , 0x94 , 0x94 , 0x94 , 0x58 } , // n
- { 0x78 , 0x94 , 0x94 , 0x94 , 0x58 } , // o
- { 0x78 , 0x94 , 0x94 , 0x94 , 0x58 } , // p
- { 0x78 , 0x94 , 0x94 , 0x94 , 0x58 } , // q
- { 0x78 , 0x94 , 0x94 , 0x94 , 0x58 } , // r
- { 0x78 , 0x94 , 0x94 , 0x94 , 0x58 } , // s
- { 0x78 , 0x94 , 0x94 , 0x94 , 0x58 } , // t
- { 0x78 , 0x94 , 0x94 , 0x94 , 0x58 } , // u
- { 0x78 , 0x94 , 0x94 , 0x94 , 0x58 } , // v
- { 0x78 , 0x94 , 0x94 , 0x94 , 0x58 } , // w
- { 0x78 , 0x94 , 0x94 , 0x94 , 0x58 } , // x
- { 0x78 , 0x94 , 0x94 , 0x94 , 0x58 } , // y
- { 0x78 , 0x94 , 0x94 , 0x94 , 0x58 } , // z
- { B01111110 , B11100001 , B10011001 , B10000111 , B01111110 } , // O
- { 0x00 , 0x82 , 0xff , 0x80 , 0x00 } , // 1
- { 0xc2 , 0xa1 , 0x91 , 0x89 , 0x86 } , // 2
- { 0x81 , 0x81 , 0x85 , 0x8B , 0x71 } , // 3
- { 0x18 , 0x14 , 0x12 , 0xff , 0x00 } , // 4
- { 0x8f , 0x89 , 0x89 , 0x89 , 0x71 } , // 5
- { 0x7c , 0x8a , 0x89 , 0x89 , 0x70 } , // 6
- { 0x01 , 0xf1 , 0x09 , 0x05 , 0x03 } , // 7
- { 0x76 , 0x89 , 0x89 , 0x89 , 0x76 } , // 8
- { 0x06 , 0x89 , 0x89 , 0x89 , 0x7e } , // 9
- { 0x80 , 0x00 , 0x80 , 0x00 , 0x80 } // tres puntos
- } ;
- / *
- Este método mostrará los caracteres para
- palabra "Arduino" una tras otra en la matriz.
- (necesita al menos 5x7 leds para ver los caracteres completos)
- * /
- void writeArduinoOnMatrix ( String mensajea ) {
- / * aquí están los datos para los caracteres * /
- for ( int j = 0 ; j < mensajea. length ( ) ; j ++ ) {
- int pos = 0 ;
- char ch = mensajea. charAt ( j ) ;
- if ( ch > = 'A' && ch <= 'Z' ) pos = ch - 'A' ;
- más si ( ch > = 'a' && ch <= 'z' ) pos = CH - 'a' + 26 ;
- más si ( ch > = '0' && ch <= '9' ) pos = CH - '0' + 52 ;
- más pos = 62 ;
- palabras ( letras [ pos ] ) ;
- }
- }
- palabras vacías ( byte listd [ ] ) {
- para ( int j = 7 ; j > - 4 ; j - ) {
- para ( int i = 4 ; i > - 1 ; i - ) {
- lc. setRow ( 0 , j + i , listd [ i ] ) ;
- }
- retraso ( DELAYTIME ) ;
- para ( int o = 0 ; o < 8 ; o ++ ) {
- lc. setRow ( 0 , o , 0 ) ;
- }
- }
- }
______________________________________________________
Video del funcionamiento del Laboratorio 11:
No hay comentarios:
Publicar un comentario