DESCRIPCIÓN
Controlar desde el Arduino, una matriz LED 8x8 a través de IC MAX7219, para mostrar un número del 0 al 9, dependiendo de la posición del Potenciómetro.
MATERIALES DEL LABORATORIO
- Arduino Uno
- Protoboard
- Matriz LED 8x8 MAX7219
- Cables Macho - Macho
- Potenciometros 10.000Ω
MATERIALES DEL LABORATORIO
DIAGRAMAS
PROTOBOARD
CÓDIGO
ARDUINO
- ///********** Proyecto **********
#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