Lesson 1 of 0
In Progress

8x8 Matrix

45-60 min

Intermediate

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

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

Aprender Más

Diego Francisco June 21, 2021
Soy Maker de tiempo completo e inquieto en saber como funcionan las cosas leal amigo del conocimiento I am a full-time Maker and restless in knowing how things work, loyal friend of knowledge.
Print Project
FEEDBACK