Pages: [1]   Go Down
Author Topic: problemas con codigo (ayuda)  (Read 515 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aupa

Hace un tiempo pedi ayuda con una instalacion interactiva donde mediante unos piezo electricos, captabamos la vibración mediante la pisada, y la intensidad de prendido de los leds variaban,

La cosa es que creiamos tenerlo arreglado pero de nuevo nos vuelve el mismo promeblema, no conseguimos estabilizar el valor del voltaje recivido, y el primer problema nace de que no se nos mantienen apagados los leds cuando nadie interactua. Al principio si, pero despues de que alguien alla interactuado, se nos quedan encendidos.

Si alguien puediera revisar el codigo para ver que podria fallar, seria perfecto.

Muchas gracias
saludos

Code:
int salida=13;
int contador=0;
int EntradaAnaloga=1;
int Nivel, NivelAnt, Delta, DeltaCambio, Alarma;

void setup()
{
Serial.begin(9600);
pinMode(salida, OUTPUT);
DeltaCambio=100;//a 30 queda encendido mucho tiempo,a 100 es muy sensible
Alarma=950;
}

void loop()
{
 
Nivel = analogRead(EntradaAnaloga);
Delta = Nivel-NivelAnt;




/*
Serial.print("Nivel ");
Serial.println(Nivel);
Serial.print("Delta ");
Serial.println(Delta);
delay(1000);
*/

//Si no hay vibración por encima del Delta definido, Apagar Led
if (abs(Delta) < DeltaCambio)
{
NivelAnt=Nivel;
digitalWrite(salida, LOW);
//goto leer;
}
else
{
/* Serial.print("Nivel ");
Serial.println(Nivel); */
digitalWrite(salida, HIGH); //Encender Led
//delay(500); if (Nivel mayor-o-igual Alarma) { contador++; Serial.print("Alarma "); Serial.println(contador); Serial.print("Nivel "); Serial.println(Nivel); digitalWrite(salida, HIGH); delay(300); digitalWrite(salida, LOW); delay(300); digitalWrite(salida, HIGH); delay(300); digitalWrite(salida, LOW); delay(300); digitalWrite(salida, HIGH); //Encender Led }




//Serial.println(' a los '+millis()/1000);
}
NivelAnt=Nivel;
}
Logged

Anaco, Venezuela
Offline Offline
Jr. Member
**
Karma: 8
Posts: 88
Electronic Engineer
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,

        En general el código parece estar bien, yo solo cambiaria el NivelAnt = Nivel; justo despues de calcular el Delta para no ponerlo de nuevo mas abajo.

         Cuando haces el debug por Serial ¿que valores estas obteniendo de Nivel y Delta? ¿Estan variando?

         Te dejo el código como yo lo pondria, pero funcionalmente haría lo mismo excepto que agregue un delay para notar mejor si se apaga (Si prende y apaga muy rapido te pareceria que nunca se apaga).

Code:
int salida=13;
int contador=0;
int EntradaAnaloga=1;
int Nivel, NivelAnt, Delta, DeltaCambio, Alarma;

void setup()
{
  Serial.begin(9600);
  pinMode(salida, OUTPUT);
  DeltaCambio=100;//a 30 queda encendido mucho tiempo,a 100 es muy sensible
  Alarma=950;
}

void loop()
{
  Nivel = analogRead(EntradaAnaloga);
  Delta = Nivel-NivelAnt;
  NivelAnt=Nivel;

  //Si no hay vibración por encima del Delta definido, Apagar Led
  if( abs(Delta) < DeltaCambio )
  {
    digitalWrite(salida, LOW); //Apagar Led
  }
  else
  {
    digitalWrite(salida, HIGH); //Encender Led
  }
 
  delay(1000);
}

Saludos.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

muchas gracias, perfecto. La semana que viene construimos la instalación, y a ver que tal...
Logged

Pages: [1]   Go Up
Jump to: