domingo, 9 de diciembre de 2012

LABORATORIO #2


En el siguiente laboratorio se va Controlar con el Arduino un secuencia de 8 LEDS, se utilizara  un Potenciómetro para cambiar el orden de la secuencia, deben programar al menos 4 secuencias distintas.

MATERIALES QUE SE USARON

1 arduino

8 leds 

1 cable usb

1 protoboard

12 cables utp

8 resistencias

1 Potenciometro 10K

FOTOS DEL ENSAMBLAJE EN TIEMPO REAL









VIDEO EN TIEMPO REAL DEL FUNCIONAMIENTO DEL SISTEMA






CODIGO PARA LA ELABORACION DEL SISTEMA



const int MAXLED = 8;
//se asigna a una variable el puerto análogo del arduino
int pot = A4;
// se guarda la lectura del potenciometro
int valpot =0;

// arreglo de 8 LEDs
int led[MAXLED] = {2,3,4,5,6,7,8,9};

//primera secuencia : arreglo de un led de por medio
int ledS1[MAXLED] = {2,4,6,8,9,7,5,3};

//segunda secuencia : arreglo de un leds de los extremos al medio
int ledS2[12] = {1,128,2,64,4,32,8,16,4,32,2,64};

//tercera secuencia
int ledS3[22] = {2,4,3,5,4,6,5,7,6,8,7,9,7,8,6,7,5,6,4,5,3,4};

//cuarta secuencia
int ledS4[14] = {2,3,4,5,4,3,2,6,7,8,9,8,7,6};




// se ejecuta 1 sola vez, al iniciar el programa
void setup() {
  for (int i=0; i    pinMode(led[i], OUTPUT);
    pinMode(pot, INPUT);
}




// se repite infinitamente mientras el arduino tenga corriente
void loop() {
// recorre desde el indice 0 hasta el 7  
for (int i=0; i          on(led[i], 100);
         off(led[i], 100);
     
        //se hace una lectura del potenciometro
          valpot = analogRead(pot);
        //se evalua,  dependiendo del valor del potenciometro
        // se le asigna una secuencia  
          if( valpot > 0  && valpot <256 p="p">          { secuenciaUno(); }    
          else if(valpot > 256  && valpot < 512)
          {  secuenciaDos();}
          else if(valpot > 512  && valpot < 768)
          {  secuenciaTres();}
         else if(valpot > 768  && valpot < 1024)
         {  secuenciaCuatro();}
       
 }

 // recorre desde el indice 6 hasta el 1, para no repetir los extremos
 for (int i=MAXLED-2; i>0; i--) {
    on(led[i], 100);
    off(led[i], 100);
  }



}



// métodos propios --------------------------------------------

//secuencia I
void secuenciaUno(){
   uno:
  //recorre el arreglo donde se difinio la secuencia
   for (int i=0; i           on(ledS1[i], 500);
           off(ledS1[i], 100);
   }

     //se hace una lectura previa para saber
     //si todavia se esta ejecutando la secuencia actual
     valpot = analogRead(pot);
     if( valpot > 0  && valpot <256 nbsp="nbsp" p="p">     goto uno; }        
}



//secuencia II
void secuenciaDos(){
 
 
  dos:
 //recorre el arreglo donde se difinio la secuencia
   for (int i=0; i<12 i="i" p="p">           on(ledS1[i], 500);
           off(ledS1[i], 100);
   }

   


    //se hace una lectura previa para saber
     //si todavia se esta ejecutando la secuencia actual                      
    valpot = analogRead(pot);
    if(valpot > 256   && valpot < 512){  
    goto dos; }

}




//secuencia III
void secuenciaTres(){
tres:
//recorre el arreglo donde se difinio la secuencia
for (int i=0; i<22 i="i" p="p">           on(ledS3[i], 500);
           off(ledS3[i], 100);
}
    //se hace una lectura previa para saber
     //si todavia se esta ejecutando la secuencia actual
    valpot = analogRead(pot);
    if(valpot > 512  && valpot < 768){  
    goto tres; }
}




//secuencia IV
void secuenciaCuatro(){

 
 
 cuatro:
//recorre el arreglo donde se difinio la secuencia
   for (int i=0; i<14 i="i" p="p">           on(ledS1[i], 500);
           off(ledS1[i], 100);
   }      //se hace una lectura previa para saber
     //si todavia se esta ejecutando la secuencia actual
    valpot = analogRead(pot);
    if(valpot > 768  && valpot < 1024){  
    goto cuatro; }
}




void on(int led, int ms) {
  digitalWrite(led, HIGH); // HIGH = +5V = prender
  delay(ms); // espera en milisegundos
}

void off(int led, int ms) {
  digitalWrite(led, LOW); // LOW = 0V = apagar
  delay(ms); // espera en milisegundos
}






DIAGRAMA DEL LABORATORIO




ESQUEMA DEL LABORATORIO














No hay comentarios:

Publicar un comentario