Hola a todos,
tengo que programar el uno de la siguiente manera,
tengo un interruptor que le da positivo a un pin (3) y tine una salida el pin(12) que tiene que encender 5 seggundos.
hasta aqui no es muy dificil pero el problema viene que cuando el pin 13 es low antes de 5 seg el pin 12 tiene que ser low,
os digo que el pin 3 es un interruptor no un pulsador,
si me pudierais dar una pista de como hacerlo o me escribierais el programa os lo agradeceria, por que yo ya no puedo mas, todo me falla.
un saludo,
muchas gracias de antemano.
Que tiene que hacer si lo mantienes pulsado mas de 5 segundos?
Y si sueltas el pulsador antes de los 5?
gracias marcial por contestar.
te explico
el interruptor cuando conecta tiene que encender un led 6 segundos y despues apagarse
hasta aqui todo normal,
pero si yo desconecto el interruptor el led se tiene que apagar
y si vuelvo a conectar se encienda el led por 5 seg.
un saludo
Puede fucionar algo asi?
byte entrada=3;
byte salida=12;
unsigned long Amillis; // para almacenar ultimo tiempo
unsigned long tEncendido=5000; // tiempo de encendido
boolean Pulsado=false;
boolean Encendido=false;
void setup()
{
pinMode(entrada, INPUT);
pinMode(salida, OUTPUT);
digitalWrite(salida, LOW);
}
void loop()
{
Pulsado=digitalRead(entrada);
if (Pulsado && !Encendido)
{
Encendido=true;
Amillis=millis() + tEncendido;
digitalWrite(salida, HIGH);
}
if (Encendido && (!Pulsado || millis()>Amillis) )
{
Encendido=false;
digitalWrite(salida, LOW);
}
}
muchas gracias de nuevo,
con tu ayuda he podido conseguir que el progrma funcione, el tuyo no funciona y lo he modificado y te lo mando para que veas lo que he modificado.
byte entrada=3;
byte salida=12;
unsigned long lAmillis; // para almacenar ultimo tiempo
unsigned long lTEncendido=3000; // tiempo de encendido
boolean bPulsado=false;
boolean bEncendido=false;
void setup()
{
Serial.begin(9600);
pinMode(entrada, INPUT);
pinMode(salida, OUTPUT);
digitalWrite(salida, LOW);
}
void loop()
{
bPulsado=digitalRead(entrada); //lee el interruptor
if (bPulsado==true && bEncendido==false)
{
bEncendido=true;
lAmillis=millis() + lTEncendido;
digitalWrite(salida, HIGH);
}
if (millis()>lAmillis)
{
digitalWrite(salida,LOW);
}
if (bPulsado==LOW)
{
digitalWrite(salida,LOW);
bEncendido=false;
}
Serial.print("pulsado= ");
Serial.print(bPulsado);
Serial.print(" encendido= ");
Serial.print(bEncendido);
Serial.print(" millis= ");
Serial.print(millis());
Serial.print(" Amillis= ");
Serial.println(lAmillis);
}
de nuevo muchas gracias marcial
Disculpa el error, no he tenido tiempo de probarlo . Y algo he aprendido, hay q mirar lo que se escribe dos veces, jajajaja.
Me alego que hayas solucionado, y al menos haberte puesto en el buen camino
MARCIALLLLLLLLLLL.
ajajajja
si pasas por sevilla algun dia te cambio el aceite gratis
pero al coche ( no pienses mal), jajajja
mejor al coche si, jajajajaja