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

Escape to an island of imagination + innovation as Maker Faire Bay Area returns for its 16th iteration!

Prices Increase in....

Days
Hours
Minutes
Seconds
FEEDBACK