You are on page 1of 7

4x4 LED Matrix - animacin simple

Ahora usted tiene una manera fcil de configurar los LED necesarios , ahora usando el cdigo
que tenemos de tutorial anterior vamos a hacer una animacin simple

Que necesitars
Arduino UNO (u otro tablero)
16 x LED (diodo emisor de luz)
Resistencia de 4 x 220 Ohm

Cmo conectar todo


1) Cada fila de 4 LEDs tiene anodos conectados junto con una resistencia de 220 omh que va
a los pins digitales 5, 6, 7 y 8
2) Cada columna de 4 LEDs tiene ctodos conectados juntos directamente a los pines
digitales 9, 10, 11 y 12

Figura 8 - Circuito matricial LED Arduino 4x4


Nota - Los cables ROJO y AZUL no estn conectados entre s en ningn lugar.

Como funciona
Esta es la animacin que vamos a hacer (lo hice muy sencillo y solo con 2 marcos para que
sea ms fcil):
Figura 11 - Matriz Arduino 4x4 LED - Animacin
Para lograrlo, en la funcin loop () vamos a:
1) Borrar matriz - ajuste todos los pines a 0 (todos los LEDs apagados en el array) usando la
funcin clearArray ()
2) Ajuste los LED necesarios para animar el primer fotograma a ON (1) en el array 2D
) LED reales de la matriz - funcin drawMatrix ())
4) Repita el paso 3) por muchas veces, digamos 1000 como drawMatrix () slo encender los
LEDs por una pequea fraccin de tiempo, pero necesitamos que estn encendidos por ms
tiempo hora

5) Borrar matriz - ajuste todos los pines a 0 (todos los LEDs apagados en la matriz) utilizando
la funcin clearArray ()
6) Ajuste los LED necesarios para la animacin 2 fotograma a ON (1) en la matriz 2D
7) Dibuje la matriz Real de la matriz - drawMatrix () funcin)
8) Repita el paso 7) para muchas veces, digamos 1000 como drawMatrix () slo se encienden
los LEDs para una pequea fraccin de tiempo, pero necesitamos para que se encienda
durante ms tiempo hora

Programacin
Paso 1
Copie todo el cdigo del tutorial anterior y luego copie el contenido de la funcin loop () a una
funcin completamente nueva sobre el setup ():
Void drawMatrix ()
{
Para (i = 0; i <4; i ++) // cuenta i de 0 a 3
{
// 1)
ClearAllPins (); // hacer que todos los pins no hagan nada (apague todos los LED)
// 2), 3)
If (matriz [0] [i] == 1) // compruebe si la columna 'i' - la primera fila est
encendida
SetPinTo5V (nodos [0]) // suministra 5V a la 1 fila
If (matriz [1] [i] == 1) // compruebe si la columna 'i' - LED de la segunda fila est
encendida
SetPinTo5V (nodos [1]) // suministra 5V a la 2 fila
Si (matriz [2] [i] == 1)
SetPinTo5V (nodos [2]);
Si (matriz [3] [i] == 1)
SetPinTo5V (nodos [3]);

SetPinToGND (ctodos [i]) // fije el pilar de la columna 'i' en GND, de modo que
los LEDs necesarios estn completamente conectados y encendidos
// 4)
Retardo (1) // mantener los LED encendidos durante 1 ms
}
}
Ahora tienes una funcin clean loop (), donde escribiremos el cdigo de la animacin.

Paso 2
Limpie la matriz 'matriz' 2D (rellnela con 0's), no es realmente importante en este momento,
pero se ve mejor limpio.

Matriz de bytes [4] [4] = {


{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0}
};

Paso 3
Dado que ahora estamos utilizando una matriz 2D para almacenar informacin que puede
cambiar (que los LEDs estn encendidos y apagados), tambin sera til tener una funcin
que puede limpiar la matriz (poner todo a 0) en caso de que necesitamos escribir diferentes
valores en eso:

Void clearArray () // establece cada valor en matriz 2D 'matriz' en 0


{
Para (i = 0; i <4; i ++) // el cdigo dentro se ejecuta 4 veces con el valor 'i' aumentado cada
vez
{
Matriz [i] [0] = 0;
Matriz [i] [1] = 0;
Matriz [i] [2] = 0;
Matriz [i] [3] = 0;
}
}

Etapa 4
En el tipo de funcin loop ():
// 1)
ClearArray ();

// 2)
Matriz [0] [0] = 1;
Matriz [0] [1] = 1;
Matriz [0] [2] = 1;
Matriz [0] [3] = 1;
Matriz [1] [0] = 1;
Matriz [1] [3] = 1;
Matriz [2] [0] = 1;
Matriz [2] [3] = 1;
Matriz [3] [0] = 1;
Matriz [3] [1] = 1;
Matriz [3] [2] = 1;
Matriz [3] [3] = 1;

// 3) y 4)
Para (int i = 0; i <1000; i ++) {
DrawMatrix ();
}

// 5)
ClearArray ()

// 6)
Matriz [1] [1] = 1;
Matriz [1] [2] = 1;
Matriz [2] [1] = 1;
Matriz [2] [2] = 1;

// 7) y 8)
Para (int i = 0; i <1000; i ++) {
DrawMatrix ();
}

Cdigo completo
Como se puede ver en el cdigo del paso 3, cada vez que realice un cambio en la matriz,
primero debe borrar la matriz usando clearArray (), luego hacer cambios en la matriz 2D y luego
llamar a la funcin drawMatrix () para pocos Cientos de veces, de lo contrario slo ver parpadeo
extrao.
Aqu est el cdigo completo:
Matriz de bytes [4] [4] = {
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0}
};

Byte nodos [4] = {5, 6, 7, 8};


Bytes ctodos [4] = {9, 10, 11, 12};
Byte i; // slo una variable que se utilizar en bucles FOR

Void setPinTo5V (byte pin) // establece un pin asignado a esta funcin a una fuente de tensin de 5V
{
PinMode (pin, OUTPUT);
DigitalWrite (alfiler, ALTO);
}
Void setPinToGND (byte pin) // establece un pin asignado a esta funcin a un GROUND (GND pin)
{
PinMode (pin, OUTPUT);
DigitalWrite (pin, LOW);
}
Void clearAllPins () // hacer que todos los pines floten - por lo que no hacen nada
{
Para (i = 0; i <4; i ++) // el cdigo dentro se ejecuta 4 veces con el valor 'i' aumentado cada
vez
{
PinMode (nodos [i], INPUT);
DigitalWrite (nodos [i], LOW);
PinMode (ctodos [i], INPUT);
DigitalWrite (ctodos [i], BAJO);
}
}
Void drawMatrix ()
{
Para (i = 0; i <4; i ++) // cuenta i de 0 a 3
{
// 1)
ClearAllPins (); // hacer que todos los pins no hagan nada (apague todos los LED)

// 2), 3)
If (matriz [0] [i] == 1) // compruebe si la columna 'i' - la primera fila est
encendida
SetPinTo5V (nodos [0]) // suministra 5V a la 1 fila
If (matriz [1] [i] == 1) // compruebe si la columna 'i' - LED de la segunda fila est
encendida
SetPinTo5V (nodos [1]) // suministra 5V a la 2 fila
Si (matriz [2] [i] == 1)
SetPinTo5V (nodos [2]);
Si (matriz [3] [i] == 1)
SetPinTo5V (nodos [3]);

SetPinToGND (ctodos [i]) // fije el pilar de la columna 'i' en GND, de modo que
los LEDs necesarios estn completamente conectados y encendidos
// 4)
Retardo (1) // mantener los LED encendidos durante 1 ms
}
}
Void clearArray () // establece cada valor en matriz 2D 'matriz' en 0
{
Para (i = 0; i <4; i ++) // el cdigo dentro se ejecuta 4 veces con el valor 'i' aumentado cada
vez
{
Matriz [i] [0] = 0;
Matriz [i] [1] = 0;
Matriz [i] [2] = 0;
Matriz [i] [3] = 0;
}
}

Void setup ()
{
}

Void loop ()
{
// 1)
ClearArray ();

// 2)
Matriz [0] [0] = 1;
Matriz [0] [1] = 1;
Matriz [0] [2] = 1;
Matriz [0] [3] = 1;
Matriz [1] [0] = 1;
Matriz [1] [3] = 1;
Matriz [2] [0] = 1;
Matriz [2] [3] = 1;
Matriz [3] [0] = 1;
Matriz [3] [1] = 1;
Matriz [3] [2] = 1;
Matriz [3] [3] = 1;

// 3) y 4)
Para (int j = 0; j <1000; j ++) {
DrawMatrix ();
}

// 5)
ClearArray ()

// 6)
Matriz [1] [1] = 1;
Matriz [1] [2] = 1;
Matriz [2] [1] = 1;
Matriz [2] [2] = 1;
// 7) y 8)
Para (int j = 0; j <1000; j ++) {
DrawMatrix ();
}
}

You might also like