En este laboratorio controlaremos desde el arduino, una matriz LED 8x8 a través de un IC MAX7219, mostrando un numero de 0 a 9 según la posición que le demos al potenciómetro.
MATERIALES:
- Protoboard
- Arduino Uno
- Potenciómetro
- Matriz Led 8*8
- Cables
DIAGRAMAS;
ESQUEMÁTICO:
FOTOS MONTAJE:
VIDEO:
CÓDIGO:
#include "LedControl.h"
int DataPin = 9; //pin 9 conectado a DataIn
int ClockPin = 10; //pin 10 conectado a CLK
int LatchPIN = 8; //pin 8 conectado a LOAD/CS
int POT1 = A0; //A0 Potenciometro
LedControl lc=LedControl(DataPin,ClockPin,LatchPIN,1);
//retardo entre envios de datos
unsigned long delaytime=100;
//Mostrará los caracteres para la numeración del 0 al 9 ,
//incluyendo el espacio
byte cero[5]={ B00111110, B01000001, B01000001, B00111110, B00000000}; //
byte uno[5]={ B01000010, B01111111, B01000000, B00000000, B00000000}; //
byte dos[5]={ B01100010, B01010001, B01001001, B01000110, B00000000}; //
byte tres[5]={ B00100010, B01000001, B01001001, B00110110, B00000000}; //
byte cuatro[5]={ B00011000, B00010100, B00010010, B01111111, B00000000}; //
byte cinco[5]={ B00100111, B01000101, B01000101, B00111001, B00000000}; //
byte seis[5]={ B00111110, B01001001, B01001001, B00110000, B00000000}; //
byte siete[5]={ B01100001, B00010001, B00001001, B00000111, B00000000}; //
byte ocho[5]={ B00110110, B01001001, B01001001, B00110110, B00000000}; //
byte nueve[5]={ B00000110, B01001001, B01001001, B00111110, B00000000}; //
byte espacio[5]={ B00000000, B00000000, B00000000, B00000000, B00000000}; //
// Permite ejecutar el byte requerido
byte kar[100] = {
B00000000, B00000000, B00000000, B00000000, B00000000,
B00111110, B01000001, B01000001, B00111110, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000,
B01000010, B01111111, B01000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000,
B01100010, B01010001, B01001001, B01000110, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000,
B00100010, B01000001, B01001001, B00110110, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000,
B00011000, B00010100, B00010010, B01111111, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000,
B00100111, B01000101, B01000101, B00111001, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000,
B00111110, B01001001, B01001001, B00110000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000,
B01100001, B00010001, B00001001, B00000111, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000,
B00110110, B01001001, B01001001, B00110110, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000,
B00000110, B01001001, B01001001, B00111110, B00000000};
void setup() {
/* el MAX7219 esta en modo Power-saving cuando se
inicia, se debe sacar de ese estado*/
lc.shutdown(0,false);
lc.setIntensity(0,4); // configurar brillo a nivel medio
lc.clearDisplay(0); // limpiar pantalla
//Establece el pin análogo POT1 como salida
pinMode(POT1,INPUT);
}
void loop() //Función principal.
// Dependiendo de cada dígito, se envía a la función display
// los estados (0 y 1) a cada uno de los segmentos.
{
int t1=analogRead(POT1);
int pos=map(t1,0,1023,0,94);
lc.setRow(0,0,0);
// for (int j=0;j<50;j++){
// Muestra el retraso que debe tener cada caracter
lc.setRow(0,0,kar[pos]);
lc.setRow(0,1,kar[pos+1]);
lc.setRow(0,2,kar[pos+2]);
lc.setRow(0,3,kar[pos+3]);
lc.setRow(0,4,kar[pos+4]);
lc.setRow(0,5,kar[pos+5]);
lc.setRow(0,6,kar[pos+6]);
lc.setRow(0,7,kar[pos+7]);
delay(200);//El tiempo de espera en milisegundos
/* digitalWrite(LatchPIN, LOW);
shiftOut(DataPin, ClockPin, MSBFIRST, kar[pos]);
digitalWrite(LatchPIN, HIGH);
*/
}


No hay comentarios:
Publicar un comentario