Práctica 12: Emoticones triste y sonriente





Para esta práctica se necesita:

  1. 1. Placa Arduino UNO
  2. 2. Matriz LED 8x8 MAX7219
  3. 3. Cables para realizar las conexiones

  4. Materiales

Introducción


En esta práctica conoceremos el módulo de la matriz LED de 8x8 controlado por el circuito integrado MAX7219. Con este módulo podemos mostrar letras, números y hasta figuras. Muy seguramente has visto este tipo de dispositivos en carteles publicitarios, en señales de tráfico, en ascensores, etc. En la figura 1 podemos ver su uso en matrices de gran tamaño.


fig 1



La práctica propuesta consiste en mostrar dos figuras relacionadas con los emoticones de cara feliz y cara sonriente. Las cuales van a estar alternando con tiempo de retardo de un segundo. Sin embargo, antes de entrar al desarrollo de la practica vamos a tratar algunos conceptos.

¿Qué es una matriz LED?

Es un display formado por múltiples LEDs en una distribución rectangular. El de uso habitual para proyectos de electrónica es el de 8×8 y se suele agrupar para formar matrices mayores, aunque comercialmente se encuentran matrices de diferentes tamaños.

En el caso del módulo de 8x8, este está formado por 8 filas y 8 columnas donde en cada intersección se encuentra un LED. Para encender o apagar un LED se requiere aplicar los valores HIGH (5V) y LOW (0V) a su correspondiente fila y columna. En la figura 2 se detalla la conexión de una matriz de 8x8

fig 1



Se podría controlar la matriz LED a través de sus 16 terminales, sin embargo, esto requeriría 16 pines digitales y un trabajo constante del procesador para actualizar la imagen. Por tal motivo se emplea un controlador como el integrado, el MAX7219, que facilita la conexión y el control de una matriz LED de 8x8.

Vídeo con el paso a paso




Montaje



Las partes principales del módulo se puede ver en la figura 3.

fig 1



Realizar la conexión del módulo cableando el terminal Vcc al pin 5V, el terminal GND, el terminal "DIN" al pin 5, el terminal "CS" al pin 6 y el terminal "CLK" al pin 7 placa Arduino.


tablas


arduino

Programación


Primero plantearemos el diseño y lógica de funcionamiento de los dos emoticones que mostraremos en el display (triste y sonriente). Para ello partiremos de la matriz de 8x8 en la cual en la cual representaremos el diseño de cada emoticón. Vamos a considerar los estados LOW para LED apagado (OFF (0V) = 0) y HIGH para LED encendido (ON (5V) = 1).

Para la cara triste partimos del diseño de la siguiente figura, donde el color blanco corresponde al estado LOW y el color rojo al estado HIGH. Como tenemos 8 posiciones por cada fila (F1 (C1 C2 C3 C4 C5 C6 C7 C8)) podemos organizar una representación binaria de 8 bits para controlar el encendido de los LED. En la tabla 1 podemos ver la representación binaria correspondiente a la cara triste y en la tabla 2 la representación binaria de la cara sonriente..


tablas


arduino

Teniendo claridad de la figura y su representación binaria podemos iniciar la secuencia que debe tener el programa.

  1. 1. Asignación de pines para las entras DIN, CS y CLK
  2. 2. Colocar los estados de las salidas para obtener la cara triste
  3. 3. Colocar una pausa de un segundo para mostrar la cara feliz
  4. 4. Colocar los estados de las salidas para obtener la cara feliz


Con la secuencia del proceso pasamos a construir el código en Ardublock.

  1. 1. Quitamos el bloque “loop” de nuestro espacio de trabajo arrastrando y soltando en la parte inferior izquierda.

  2. 2. Colocamos el bloque para tener la opción de la configuración inicial (setup).

    Ir al botón “Control” del panel izquierdo y seleccionar el bloque program.

    fig 4


  3. 3. Colocar el bloque de Matriz y asignar los pines de salida para la conexión (Din =5, CS=6 y CLK=7)

    fig 5


  4. 4. Colocar el bloque para escritura en la Matriz y asignar los valores binarios a cada línea para la cara triste. Aquí vamos a tener presente que la sección marcada como Line 0 en el bloque corresponde a la fila 1 del módulo de la matriz, finalizando con la Line 7 que corresponde a la fila 8. Nos debería quedar de la siguiente manera:

    1. Line 0: 00111100
    2. Line 1: 01000010
    3. Line 2: 10100101
    4. Line 3: 10000001
    5. Line 4: 10000001
    6. Line 5: 10111101
    7. Line 6: 01000010
    8. Line 7: 00111100
    fig 64


  5. 5. Colocamos un bloque para un retardo de 1000 milisegundos (1 segundo

    fig 7


  6. 6. Colocar el bloque para escritura en la Matriz y asignar los valores binarios a cada línea para la cara sonriente. Recordemos que la sección marcada como Line 0 en el bloque corresponde a la fila 1 del módulo de la matriz, finalizando con la Line 7 que corresponde a la fila 8. Nos debería quedar de la siguiente manera:

    1. Line 0: 00111100
    2. Line 1: 01000010
    3. Line 2: 10100101
    4. Line 3: 10000001
    5. Line 4: 10100101
    6. Line 5: 10011001
    7. Line 6: 01000010
    8. Line 7: 00111100
    fig 8


  7. 7. Colocamos un bloque para un retardo de 1000 milisegundos (1 segundo).

    fig 8


    Con esto hemos finalizado la inserción de bloques para nuestras caritas triste y sonriente.

    Finalmente, nuestro programa completo nos debe quedar de la siguiente manera:

    fig 9



Ampliación


1. Realiza la representación binaria para las siguientes figuras y realiza el programa en Ardublock para tener secuencias cada dos segundos.

fig 9

2. Amplia el alcance del proyecto para que la figura cambie cada vez que se presione un botón (modulo KY-004) o el sensor táctil de la practica 9.

3. Realiza tus propias animaciones (números, letras, figuras) y muéstralas en la matriz