(redirected from Ejercicios.LEDDriver)

Learning   Examples | Foundations | Hacking | Links

Controlador LED

Este ejemplo utiliza un controlador LED que nos permite controlar una cantidad casi ilimitada de LEDs con tan solo 4 pins. Utilizamos el 4794 de Philips. Hay más información acerca de este microchop que podras encontrar en su datasheet. Un controlador LED tiene un shift register incrustado que recibe datos en forma serial y los transfiere en paralelo. Es posible formar una cadena con este chip incrementando la cantidad total de LEDs en 8 por cada unidad.

El codigo de ejemplo que aqui se aprecia toma un valor almacenado en la varibale dato y lo muestra como un numero binario decodificado. Ej: si dato es 1, solo el primer LED se enciende; si dato es 255 todos los LEDs se encenderan.

Ejemplo de conexion de un 4794

 
/* Shift Out Data
 * --------------
 * 
 * Muestra un byte, almacenado en "dato" en un grupo de 8 LEDs.
 *
 * (copyleft) 2005 K3, Malmo University
 * @autor: David Cuartielles, Marcus Hannerstig
 * @hardware: David Cuartielles, Marcos Yarza
 * @proyecto: made for SMEE - Experiential Vehicles
 */


int data = 9;
int strob = 8;
int clock = 10;
int oe = 11;
int count = 0;
int dato = 0;

void setup()
{
  beginSerial(9600);
  pinMode(data, OUTPUT);
  pinMode(clock, OUTPUT);
  pinMode(strob, OUTPUT);
  pinMode(oe, OUTPUT);
}

void PulseClock(void) {
    digitalWrite(clock, LOW);
    delayMicroseconds(20);
    digitalWrite(clock, HIGH);
    delayMicroseconds(50);
    digitalWrite(clock, LOW);
}

void loop()
{
   dato = 5;
   for (count = 0; count < 8; count++) {
    digitalWrite(data, dato & 01);
    //serialWrite((dato & 01) + 48);
    dato>>=1;
    if (count == 7){
    digitalWrite(oe, LOW);
    digitalWrite(strob, HIGH);

    }
    PulseClock();
     digitalWrite(oe, HIGH);
 }

  delayMicroseconds(20);
  digitalWrite(strob, LOW);
  delay(100);


  serialWrite(10);
  serialWrite(13);
 delay(100);                  // espera por un momento.
}



Share