Premendo un pulsante per 10 secondi fai...

Ciao, sto provando ad usare un pulsante con la funzione a tempo cioè tenendo premuto lo stesso per un determinato tempo fai.. il problema che non mi funziona bene la prima volta.

[code]
long t0 = 0;
long t = 5000;
void setup() {
  Serial.begin(9600);
  pinMode(2, INPUT);
}
void loop() {
  int tasto = digitalRead(2);
  if (tasto == LOW &&  millis() - t0 > t) {
    t0 = millis();
    Serial.print("tempo=");
    Serial.println(t);
    Serial.println(t0);
    Serial.println("accesso");
  }
}

[/code]

Manca un

 t0 = millis();

nel setup()

Ciao,
P.

pgiagno:
Manca un

 t0 = millis();

nel setup()

Ciao,
P.

ora va bene all'inizio ma non durante il ciclo.

Credo (ma correggimi se sbaglio) che tu voglia fare due diverse cose secondo il caso che il pulsante sia rimasto premuto piu o meno di "t" ... se si, allora dovresti ripensare a tutto il sistema per fare il controllo ...

Vale a dire, leggi il momento in cui il tasto viene premuto, imposta t0, aspetta che il tasto venga rilasciato, a quel punto controlla, e se e' passato piu di t fai una cosa, altrimenti fai l'altra ...

Oltre a quanto detto da Etemenanki, seguendo l'esempio blinkwithoutdelay, sarebbe meglio l'uso di unsigned long.