Registro de desplazamiento de 8 leds.

publicado en: Blog, Tutoriales | 0

Registro de desplazamiento de 8 leds

En tutoriales anteriores aprendimos a usar el BLINK con arduino, ahora haremos una extensión de el para hacer un desplazamiento a un registro de desplazamiento  de 8 leds. Los leds estarán encendiendo de manera individual y repetitiva.

El orden de encendido será del bit menos significativo al bit más significativo ósea de derecha a izquierda.

 

 

 

Sin título

 

En la figura se muestra una forma opcional de conectar el circuito.

La salida del arduino correspondiente al primer bit (al menos significativo) es la 13, mientras que la salida que corresponde al bit más significativo es la 6.

 

En esta ocasión mostraremos dos códigos diferentes para hacer la misma función y queda en criterio del lector cual implementar, en el  primer programa, se pondrá en alto el bit menos significativo, se desplazara  hasta llegar al más significativo y se repetirá el ciclo.

 

 

PROGRAMA

// Registro de desplazamiento con 8 leds

int LED=13;    //Declaracion de variables
int LED1=12;
int LED2=11;
int LED3=10;
int LED4=9;
int LED5=8;
int LED6=7;
int LED7=6;


void setup()
{

 pinMode(LED,OUTPUT);    //Declarar las variables como salidas
 pinMode(LED1,OUTPUT);
 pinMode(LED2,OUTPUT);
 pinMode(LED3,OUTPUT);
 pinMode(LED4,OUTPUT);
 pinMode(LED5,OUTPUT);
 pinMode(LED6,OUTPUT);
 pinMode(LED7,OUTPUT);

}


void loop()
{
  digitalWrite(LED,HIGH);    // El ciclo inicia encendiendo el LED 
     delay (1000);           //correspondiente al bit menos significativo  
  digitalWrite(LED1,LOW);    //para continuar encendiendo los demas leds.
  digitalWrite(LED2,LOW);    //El retardo solo se utilizara para el led   
  digitalWrite(LED3,LOW);    //que encendemos para que se visualice este proceso
  digitalWrite(LED4,LOW);      
  digitalWrite(LED5,LOW);      
  digitalWrite(LED6,LOW);      
  digitalWrite(LED7,LOW); 

  digitalWrite(LED,LOW);    
  digitalWrite(LED1,HIGH);
       delay (1000);             
  digitalWrite(LED2,LOW);      
  digitalWrite(LED3,LOW);      
  digitalWrite(LED4,LOW);      
  digitalWrite(LED5,LOW);      
  digitalWrite(LED6,LOW);      
  digitalWrite(LED7,LOW); 


  digitalWrite(LED,LOW);    
  digitalWrite(LED1,LOW);
  digitalWrite(LED2,HIGH);
         delay (1000);             
  digitalWrite(LED3,LOW);      
  digitalWrite(LED4,LOW);      
  digitalWrite(LED5,LOW);      
  digitalWrite(LED6,LOW);      
  digitalWrite(LED7,LOW); 
  
  digitalWrite(LED,LOW);    
  digitalWrite(LED1,LOW);
  digitalWrite(LED2,LOW);      
  digitalWrite(LED3,HIGH);
       delay (1000);             
  digitalWrite(LED4,LOW);      
  digitalWrite(LED5,LOW);      
  digitalWrite(LED6,LOW);      
  digitalWrite(LED7,LOW); 
  
  digitalWrite(LED,LOW);    
  digitalWrite(LED1,LOW);
  digitalWrite(LED2,LOW);      
  digitalWrite(LED3,LOW);      
  digitalWrite(LED4,HIGH);
          delay (1000);             
  digitalWrite(LED5,LOW);      
  digitalWrite(LED6,LOW);      
  digitalWrite(LED7,LOW); 
  
  digitalWrite(LED,LOW);    
  digitalWrite(LED1,LOW);
  digitalWrite(LED2,LOW);      
  digitalWrite(LED3,LOW);      
  digitalWrite(LED4,LOW);      
  digitalWrite(LED5,HIGH);
       delay (1000);             
  digitalWrite(LED6,LOW);      
  digitalWrite(LED7,LOW); 
  
  digitalWrite(LED,LOW);    
  digitalWrite(LED1,LOW);
  digitalWrite(LED2,LOW);      
  digitalWrite(LED3,LOW);      
  digitalWrite(LED4,LOW);      
  digitalWrite(LED5,LOW);      
  digitalWrite(LED6,HIGH);
      delay (1000);  
  digitalWrite(LED7,LOW); 
  
  digitalWrite(LED,LOW);     //En esta rutina encendera el LED7 correspondiente  
  digitalWrite(LED1,LOW);   //al led mas significativo.
  digitalWrite(LED2,LOW);      
  digitalWrite(LED3,LOW);      
  digitalWrite(LED4,LOW);      
  digitalWrite(LED5,LOW);      
  digitalWrite(LED6,LOW);      
  digitalWrite(LED7,HIGH);
       delay (1000); 
      
  digitalWrite(LED,LOW);      //En esta parte del programa no encendera ningun
  digitalWrite(LED1,LOW);     //para evitar el encendido de dos leds al mismo tiempo
  digitalWrite(LED2,LOW);     
  digitalWrite(LED3,LOW);      
  digitalWrite(LED4,LOW);      
  digitalWrite(LED5,LOW);      
  digitalWrite(LED6,LOW);      
  digitalWrite(LED7,LOW);
    delay(1000);
 
  
    }

En el segundo programa usaremos una rutina con un ciclo “For” y obtendremos el mismo resultado pero con menos líneas de código ofreciendo muchas ventajas, este ciclo se compara el valor de la variable i entre el valor de la condición, cuando sean iguales el valor de i y el valor de la condición el ciclo se repetirá.

 

PROGRAMA 2

//Registro de desplazamiento de 8 bits con for

int i;        //Declaracion de variables
int LED=13;
int LED1=12;
int LED2=11;
int LED3=10;
int LED4=9;
int LED5=8;
int LED6=7;
int LED7=6;


void setup()
{

 pinMode(LED,OUTPUT);    //La variables se declaran como salidas
 pinMode(LED1,OUTPUT);
 pinMode(LED2,OUTPUT);
 pinMode(LED3,OUTPUT);
 pinMode(LED4,OUTPUT);
 pinMode(LED5,OUTPUT);
 pinMode(LED6,OUTPUT);
 pinMode(LED7,OUTPUT);

}

void loop()
{
  
  for (i=13;i>=6;i--)       // En el ciclo for la variable i 
  {                        //su valor inicial es 13 y se compara 
    digitalWrite(i,HIGH);  //con la condicion i>=6 si i es mayor 
    delay(1000);           //o igual a 6 i decrementa. 
    digitalWrite(i,LOW);  
    }
    }
    

 

 

 

 

 

Dejar una opinión