Se desarrollara una matriz de leds 2D de 4x10, evitando el uso de módulos prefabricados, controladores (Por ejemplo el más común es el MAX7219) y librería (La cuales ya existen), el proyecto fue simulado mediante Tinkercad online.
La finalidad del proyecto se centra en el desarrollo de decodificadores, multiplexores, controladores y conocer su funcionalidad, estructura y aplicación en algo sencillo como lo es una matriz de leds. Es muy común la aplicación de este tipo de proyectos, así como también la omisión que se les da a las bases del mismo, porque comúnmente los decodificadores, multiplexores se utilizan pero no se conoce su funcionamiento ni cómo desarrollarlos, lo cual forma una parte esencial en el conocimiento de un electrónico.
Historia de la Arquitectura II, 1era actividad..pdf
MATRIZ LED 4x10 CON ARDUINO - ATMEGA328P
1. Ing. Fernando Marcos Marcos
1
MATRIZ LED 4x10 CON ARDUINO
Marcos Marcos Fernando
fmarcos@uabc.edu.mx
RESUMEN: Se desarrollara una matriz de leds 2D
de 4x10, evitando el uso de módulos prefabricados,
controladores (Por ejemplo el más común es el
MAX7219) y librería (La cuales ya existen), el proyecto
fue simulado mediante Tinkercad online.
1 INTRODUCCIÓN
La finalidad del proyecto se centra en el desarrollo
de decodificadores, multiplexores, controladores y
conocer su funcionalidad,estructura y aplicación en algo
sencillo como lo es una matrizde leds.Es muy común la
aplicación de este tipo de proyectos, así como también
la omisión que se les da a las bases del mismo, porque
comúnmente los decodificadores, multiplexores se
utilizan pero no se conoce su funcionamiento ni cómo
desarrollarlos, lo cual forma una parte esencial en el
conocimiento de un electrónico.
2 TEORIA
Decodificadores
Es un circuito combinacional que convierte
información binaria de n líneas de entrada a un máximo
de 2n
linead de salida distintas.
Multiplexor
Son circuito combinacionales que poseen n
canales de entrada, uno de salida y m entrada de
selección. El valor de m es tal que 2m = n, lo que hace
posible la selección de cualquiera de los canales de
entrada para que su nivel lógico se presente en el canal
de salida.
Una de las aplicaciones más usuales de los
circuito multiplexores es la de enviar a un solo canal la
información procedente de varios canales.
Seleccionando en cada instante el canal de entrada
mediante la combinación binaria aplicada de selección
S. En la Figura 1 se representa el esquema de un
multiplexor de ocho canales con tres variables de
selección S0, S1 y S2. La variables de inhibición 𝐸𝑁̅̅̅̅ pone
a cero la salida cuando se encuentra en nivel uno (EN =
0).
Figura 1. Esquema de un multiplexor de ocho canales
con entrada de desinhibición (EN) representado
mediante un símbolo normalizado.
3 DESARROLLO
Para el posible desarrollo de esta práctica es
necesario contar con el siguiente material y/o equipo:
- Arduino Uno
- 10 Resistencias de 220 Ohms
- 40 Leds
- Cables de conexión
- Pinzas de corte
La práctica se desarrollo de manera simulada en la
plataforma Online Tinkercad,en la cual se puede diseñar
diagramas electrónicos con él arduino, sensores y
actuadores. El diagrama diseñado se muestra a
continuación en la Figura 2.
Figura 2. Diseño del circuito.
Las conexiones son realizadas de la siguiente
manera, las terminales digitales 0 al 9 del arduino van
conectadas a las resistencias, las cuales a su vez se
conectan a los ánodos de los leds, y las terminales
digitales 10 al 13 están conectadas a los cátodos de los
leds.
Para la programación se tomo como base la
siguiente lógica en el encendido de los leds.
Tabla 1.
ANODO CATODO RESULTADO
Uno digital Cero digital Encendido
Uno digital Uno digital Apagado
Cero digital Cero digital Apagado
Cero digital Uno digital Apagado
Las letras guardadas en memoria en este caso
fueron la “F”, “E” y la “R”, la cuales fueron guardadas en
2. Ing. Fernando Marcos Marcos
2
matrices de 3 columnas por 4 filas, como se muestra a
continuación en las tablas siguientes.
Tabla 2. Matriz para representar la letra “F”
1 1 1
1 0 0
1 1 1
1 0 0
La cual en el programa se muestra de la siguiente
manera.
int F[4][3]={{1,0,0},{1,1,1},{1,0,0},{1,1,1}};
Agrupadas en filas, empezando por la fila de abajo
hasta arriba en todos los casos.
Tabla 3. Matriz para representar la letra “E”
1 1 1
1 0 0
1 1 0
1 1 1
La cual en el programa se muestra de la siguiente
manera.
int E[4][3]={{1,1,1},{1,1,0},{1,0,0},{1,1,1}};
Tabla 4. Matriz para representar la letra “R”
1 1 1
1 0 1
1 1 0
1 0 1
La cual en el programa se muestra de la siguiente
manera.
int R[4][3]={{1,0,1},{1,1,0},{1,0,1},{1,1,0}};
El código generado del proyecto se muestra a
continuación.
String w; //Parabra (word)
void setup()
{
for(int a=0;a<14;a++){ //Los pines del 0 al 13 se
marcan como salidas
pinMode(a,OUTPUT);
}
}
void loop()
{
w="fer"; //AQUI GUARDAR LA PALABRA QUE DESEAN
MOSTRAR
w.toUpperCase(); //Cualquier letra en minúscula la
convierte en mayuscula
int lw=(w.length()-1); //Determina la longitud de la
palabra
int p=lw;
int n=11;
// MEMORIA (Abajo se agregan las letras a utilizar)
int F[4][3]={{1,0,0},{1,1,1},{1,0,0},{1,1,1}};
int E[4][3]={{1,1,1},{1,1,0},{1,0,0},{1,1,1}};
int R[4][3]={{1,0,1},{1,1,0},{1,0,1},{1,1,0}};
// MEMORIA (Arriba se agregan las letras a utilizar)
int VAR[4][3]={{0,0,0},{0,0,0},{0,0,0},{0,0,0}};
do{
for(int i=0;i<4;i++){
for(int j=0;j<3;j++){
p=lw;
do{
switch (w[p]){
//DECODIFICADOR (Agregar abajo los
casos para la letras de la Memoria)
case 'F': VAR[i][j]=F[i][j]; break;
case 'E': VAR[i][j]=E[i][j]; break;
case 'R': VAR[i][j]=R[i][j]; break;
//DECODIFICADOR (Agregar arriba los
casos para la letras de la Memoria)
}
//MULTIPLEXOR(Abajo)
for(int k=10;k<14;k++){
digitalWrite(k,HIGH);
}
for(int l=0;l<10;l++){
digitalWrite(l,LOW);
}
if(((j+n+(p*4))>-1) and
((j+n+(p*4))<10)){
if(VAR[i][j]==1){
digitalWrite(i+10,LOW);
digitalWrite((j+n+(p*4)),HIGH);
}else{
digitalWrite(i+10,HIGH);
digitalWrite((j+n+(p*4)),LOW);
}
}
//MULTIPLEXOR(Arriba)
delay(0);
p=p-1;
}while(p>-1);
}
}
delay(700);
n=n-1;
}while(n>(-3-(4*lw)));
n=11+(4*p);
}
4 DATOS EXPERIMENTALES
Los resultados obtenidos se pueden observar
claramente mediante el simulador online Tinkercad, el
link del proyecto es el siguiente:
https://www.tinkercad.com/things/0ms7OL4Zzln
Figura 3. La palabra se muestra en la matriz de led, así
lo observamos debido a la alta velocidad de
multiplexado.
3. Ing. Fernando Marcos Marcos
3
La palabra parecería estar estática debido a que la
velocidad de multiplexado supera a la respuesta de
nuestro ojo al cambio de encendido y apagado de los
leds, pero si miráramos en cámara muy lenta, solo
miraríamos un solo led encendido y el resto apagado
como se muestra en la figura 4, es lo sorprendente al
desarrollar este tipo de proyectos.
Figura 4. Multiplexado de un solo bit por ciclo.
La representación bit por bit en la matriz se puede
observar agregando un delay (en el programa está un
delay con valor de cero, esta es la que se puede
modificar, en su caso agregar un valor más grande)
después del multiplexado, lo cual nos permitiría ver la
secuencia claramente a una velocidad ajustada a
nuestra percepción.
5 CONCLUSION
Con el desarrollo de este proyecto se puede
observar que a pesar de carecer o no contar con
algunas herramientas de trabajo (módulos,
controladores, etc), por medio del conocimiento de
algunos conceptos de electrónica es posible
programarlos, lo cual resulta menos costoso, aumenta
nuestros conocimientos, experiencia y habilidad.
Las plataformas online facilitan el trabajo y el acceso
al conocimiento a todo aquel que pretenda aprender e
iniciar en el mundo de la programación en Arduino.
6 BIBLIOGRAFIA
Mandado Pérez Enrique,Mandado Yago. Sistemas
Electrónicos Digitales. Barcelona. Marcocombo,
Ediciones técnicas 2008.
M. Morris Mano. Diseño digital. México. Pearson
Educacion, 2003.