Go Down

Topic: mantener pulsado un interruptor y que realice una función (Read 748 times) previous topic - next topic

Adominguez

Hola a todos!!

Soy nuevo en el foro y también utilizando arduino, llevo poco tiempo con él.

Me he encontrado con un problema que no soy capaz de solucionar, a ver si a alguien se le ocurre alguna forma.

Simplemente lo que me gustaría hacer es que al mantener pulsado un interruptor durante varios segundos (un par de segundos por ejemplo) llame a una función para que se reinicie un programa que estoy realizando, a priori no debería de parecer muy difícil, pero no consigo dar con la solución.

Muchas gracias de antemano.

Un cordial saludo

carlosjq10

Hola amigo Bienvenido al foro.
Claro que si se puede hacer, investiga sobre la función Blink Whitout Delay. Con esta función haces uso de millis() y con ello puedes sensar o calcular el tiempo transcurrido y al cabo de por ejemplo 3 segundos presionando un pulsador puedes ejecutar o llamar a la función que tu desees.

Saludos.

Adominguez

Muchas gracias carlosjq10, ya he conseguido solucionarlo utilizando millis().

Pongo por aquí lo que yo he realizado por si a alguien más le puede ayudar:

Code: [Select]

long previousMillis = 0;
// Intervalo de tiempo que queremos que se mantenga presionado el botón
long interval = 4000;

const int switchPin = 6;

void setup() {
  pinMode(switchPin, INPUT);
}

void loop() {

  switchState = digitalRead(switchPin);
  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis > interval) {
    previousMillis = currentMillis;
   
    if (switchState == HIGH) {
      //Función que queremos que haga cuando se mantenga pulsado el botón
      funcionARealizar();
    }
  }
}


 ;D  ;D

Un saludo

Go Up