Cómo Programar una Matriz de 8x8 con Arduino
45-60 min
14-18
¿Que aprenderás?
Aprenderás más sobre la programación y la electrónica para controlar 64 leds, con ayuda de loops, arrays y creando tus propias funciones.
Definir la Variable
Paso 2
La matrix cuenta con columnas y filas, al igual que un plano cartesiano, para encender los LEDs, accederás a ellos con coordenadas; Define las columnas y filas al principio del código, usando #define de la siguiente manera:
“
#define ROW_1 2
#define ROW_2 3
#define ROW_3 4
#define ROW_4 5
#define ROW_5 6
#define ROW_6 7
#define ROW_7 8
#define ROW_8 9
#define COL_1 10
#define COL_2 11
#define COL_3 12
#define COL_4 13
#define COL_5 A0
#define COL_6 A1
#define COL_7 A2
#define COL_8 A3
”
Un consejo: la mayoría de los arduinos cuentan con 13 pines digitales, estos te permiten mandar electricidad y controlar salidas como leds o motores. Aunque cuenta con los pines que son Análogos, que permiten las salidas y entradas esto significa sensores de luz, temperatura, humedad, entre otros. Usaras los Pine Analogicos para las columnas faltantes (5 a 8)
Paso 3
Con tus variables definidas, crearas una variable para acceder a tus columnas y líneas, para trabajar mucho más fácil, escribe lo siguiente:
“
const byte rows[] = {
ROW_1, ROW_2, ROW_3, ROW_4, ROW_5, ROW_6, ROW_7, ROW_8
};
const byte col[] = {
COL_1,COL_2, COL_3, COL_4, COL_5, COL_6, COL_7, COL_8
};
”
Paso 4
Ahora coloca las coordenadas de los Led que se encenderán, empieza encendiendo todos, con el siguiente código:
“
byte ALL[] = {B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111};
”
Esta variable llamada “ALL”, la B representa la línea, y al frente tienes 1, esto significa que se encenderá puedes escribir 0 para apagar, y cada uno de estos números representan las ocho columnas, completando tu matriz.
Sección de Configuración Void
Paso 5
En la sección de void setup, colocamos nuestros pines, usaremos el Loop for, copia y pega el siguiente código:
“
for (byte i = 2; i <= 13; i++){
pinMode(i, OUTPUT);
}
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
”
El “for” te ayuda colocando los pines 2 al 13 como OUTPUT, creas un bucle que sigue con todos los pines marcandolos como salida, cuando termina sigue con los pines analogicos marcandolos uno a uno.
Crear una Función
Paso 6
Ya casi terminas tu código, ahora crea una función, esto es una parte o fracción de código que se va a ejecutar, esto te ayudará a controlar la matrix de leds
“
void drawScreen(byte buffer2[])
{
// Turn on each row in series
for (byte i = 0; i < 8; i++) // count next row
{
digitalWrite(rows[i], HIGH); //initiate whole row
for (byte a = 0; a < 8; a++) // count next row
{
// If the LEDs are backwards, put ( buffer2 [i] >> a)
digitalWrite(col[a], (~buffer2[i] >> a) & 0x01); // initiate whole column
delayMicroseconds(100); // uncoment delay for different speed of display
//delayMicroseconds(1000);
//delay(10);
//delay(100);
digitalWrite(col[a], 1); // reset whole column
}
digitalWrite(rows[i], LOW); // reset whole row
// otherwise last row will intersect with next row
}
}
”
Escribiste “void drawScreen” que declara y entre paréntesis la acción que quieres que haga.
La función ayudará a mostrar lo que quieras, tiene un For, que por cada fila va a reiniciar todos los leds y activar los que necesites teniendo en cuenta las columnas.
Sección Void Loop
Paso 7
Terminada la función, en la sección “void loop” escribiremos el siguiente código:
“
void loop() {
drawScreen(ALL);
}
”
Paso 8
Verifica, guarda y sube el código a tu arduino, observaras como todos los LEDS se encienden. Esto es porque estamos usando el ALL en “Void Loop” donde hacíamos que todos los LEDs se enciendan, puedes cambiar o agregar distintas variables de letras, números o figuras.
Recursos
Aprender Más
Acerca de MoonMakers
MoonMakers — lideradas por Camila and Diego Luna — somos una comunidad de creadores apasionados por el conocimiento. Un Makerspace, un espacio abierto con diferentes máquinas de fabricación digital. Y un canal de YouTube donde promovemos la ciencia, la tecnología y el movimiento maker.
MoonMakers ha colaborado con empresas como: Sesame Street, Make Community y en México con Televisión Educativa y Fundación Televisa, creando contenido educativo.
Hemos imparto talleres por la República Mexicana con: Talent Land, Secretaría de educación en Jalisco, Conacyt, Centro Cultural España.
Materiales:
- Microcontrolador de Arduino (Usaremos el Arduino Nano 33 loT, pero tu puedes utilizar el microcontrolador de Arduino que prefieras.)
- Una matriz de 8x8 LEDs
- 16 cables
- Protoboard
- Un cable micro usb
- Una computadora, con el IDE de Arduino
Vocabulario:
función: es una sección de un programa que calcula un valor de manera independiente al resto del programa
void setup: La función setup() se llama cuando comienza un boceto. Úselo para inicializar variables, modos de pin, comenzar a usar bibliotecas, etc. La función setup() sólo se ejecutará una vez, después de cada encendido o reinicio de la placa Arduino.
void loop: Después de crear una función setup(), que inicializa y establece los valores iniciales, la función loop() hace precisamente lo que sugiere su nombre y se repite consecutivamente, lo que permite que su programa cambie y responda. Úselo para controlar activamente la placa Arduino.
int: Los enteros son su tipo de datos principal para el almacenamiento de números.
#define: Es un componente útil de C ++ que permite al programador dar un nombre a un valor constante antes de compilar el programa. Las constantes definidas en arduino no ocupan espacio de memoria de programa en el chip. El compilador reemplazará las referencias a estas constantes con el valor definido en el momento de la compilación.
pinMode: Configura el pin especificado para que se comporte como entrada o como salida.
digitalWrite: Escriba un valor HIGH o LOW en un pin digital.Su voltaje se establecerá en el valor correspondiente: 5V (o 3.3V en placas de 3.3V) para HIGH, 0V (tierra) para LOW.
delay: Pausa el programa durante el tiempo (en milisegundos) especificado como parámetro. (Hay 1000 milisegundos en un segundo).