miércoles, 18 de noviembre de 2015

LABORATORIO # 10

DESCRIPCIÓN DEL LABORATORIO:

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