lunes, 22 de noviembre de 2010

Programación

/*
 Piezo
 Enciende LEDs conectados a los pines digitales 13-12-11 y motores en los pines 10-9-8
 según la señal del mic conectado a el pin analogico 5
 La sensibilidad es controlada por un Pote
 */
//Guerda el umbral de sensibilidad que disparará la acción
int Umbral[100];
long Umbralx;
int Umbrali;
int xx;
int tomas;
void setup()
{
    tomas=40;
    pinMode(13, OUTPUT);
    pinMode(12, OUTPUT);
    pinMode(11, OUTPUT);
    pinMode(10, OUTPUT);
    pinMode(9, OUTPUT);
    pinMode(8, OUTPUT);   
    analogReference(EXTERNAL);
    Serial.begin(9600);  
}
void loop()
{
   xx=xx+1;
   if (xx>tomas)
   {
     xx=1;
     Umbralx;
     for (int yy=1;yy<tomas+1;yy++)
     {
     Umbralx=Umbralx+Umbral[yy];
     }
     Umbralx=Umbralx/tomas;
   }
  
   Umbrali=analogRead(5);//Lee el valor del mic

   // estabilizacion **************
   //if (Umbrali<500)
   //{
   //  Umbrali=Umbral[xx];
   //} 
  //******************************
  
   Umbral[xx]=Umbrali; 
   Serial.print(Umbralx,DEC);
   Serial.println(0);
     if (Umbralx<1000)
    {
    if (Umbralx > 880)
      {
       digitalWrite(13,HIGH);
       digitalWrite(12,LOW);
       digitalWrite(11,LOW);
       digitalWrite(10,HIGH);
       digitalWrite(9,LOW);
       digitalWrite(8,LOW);
      }
    else
      {
      if (Umbralx >800)
        { 
       digitalWrite(13,HIGH);
       digitalWrite(12,HIGH);
       digitalWrite(11,LOW);
       digitalWrite(10,HIGH);
       digitalWrite(9,HIGH);
       digitalWrite(8,LOW);
        }
      else
        {
       digitalWrite(13,HIGH);
       digitalWrite(12,HIGH);
       digitalWrite(11,HIGH);
       digitalWrite(10,HIGH);
       digitalWrite(9,HIGH);
       digitalWrite(8,HIGH);
        }
      } 
    } 
  else
    {
    digitalWrite(13,LOW);
    digitalWrite(12,LOW);
    digitalWrite(11,LOW);
    digitalWrite(10,LOW);
    digitalWrite(9,LOW);
    digitalWrite(8,LOW);
    }
}

No hay comentarios:

Publicar un comentario