Go Down

Topic: Flanco de subida [SOLUCIONADO] (Read 4 times) previous topic - next topic

Cheyenne

Perdona me he liado. He releído el primer post y veo que se trataba de encender un led 2 segundos y apagarlo. La última instrucción no hay que ponerla. Es el primer código que has puesto. Y al encender el led pones un delay y lo apagas. Si tu programa no te admite un delay entonces lo enciendes y apagas según el ejemplo del IDE blinksindelay.

Cheyenne

Otra cosa. La instrucción EstadoAnterior = EstadoActual; tienes que ponerla fuera de la sentencia if.

JRodrigo

#7
Mar 15, 2012, 09:08 pm Last Edit: Mar 15, 2012, 09:09 pm by JRodrigo Reason: 1
Para estos casos lo mejor es utilizar millis() no he probado el código, pero tendria que hacer: cuando detecta el flanco de salida encender el LED 2 sec. aunque lo mantengas pulsado o sueltes el pulsador.

Quote

const int pulsador = 2;     // the number of the pushbutton pin
const int led =  14;      // the number of the LED pin
const int timeledon =  2000;  // tiempo en que la led esta encendida en ms

// variables will change:
int EstadoActual = 0;
int EstadoAnterior = 0;
int time; // almacena el tiempo de millis()

void setup() {
  pinMode(led, OUTPUT);   
  pinMode(pulsador, INPUT);
}

void loop(){
  EstadoActual = digitalRead(pulsador);
  
  if (EstadoActual == 1 & EstadoAnterior == 0){
      time = millis();
      EstadoAnterior = EstadoActual;
  }
  
  if ( time+timeledon > millis()){
     digitalWrite (led,HIGH);
  } else {
     digitalWrite (led,LOW);
  }
}



Un saludo!

Cheyenne

Ese es el código pero sacando EstadoAnterior = EstadoActual; fuera del if.

Dystrom

Buenas, primero pediros perdón porque no he podido probar el código hasta hoy de ahi que no haya podido contestar y agradeceros la ayuda,  Cheyenne tienes razon hay que poderlo fuera del IF, por cierto hay un problema, el programa solo funciona 10 veces seguidas, yo creo que es por algo relacionado con la comparacion con millis, lo que pasa es que pulsas el boton, se enciende 2 segundos y se apaga pero cuando lo has hecho unas 10 veces se queda encendido y no se apaga nunca ¿se os ocurre que puede ser?

Go Up