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.

Hacer las Conexiones

Paso 1

Empezaras haciendo las conexiones, al igual a la siguiente imagen:

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.

¿Qué sigue?

Pueden experimentar creando distintas figuras, letras, formas o incluso emojis. Usa tu creatividad para crear y experimentar con lo aprendido.

Puedes hacer un contador de tiempo para que salga una letra, espere un tiempo y salga otra para poder leer una palabra o que salga una animación.

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.

MoonMakers

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).

Makeyland Graphic

Sign up for monthly project ideas for young makers from the leading maker educators.

FEEDBACK