Pulsante che dopo conto alla rovescia inibisce altro pulsante

Salve a tutti e buon anno! nel mio prototipo dovrei far si che premendo il pulsante1 si accenda un led, però una volta premuto il pulsante2 parte una specie di conto alla rovescia(per esempio di 10 secondi) che una volta arrivato a 0, non mi permette più di accendere il led col pulsante1, che strada devo prendere?

int pulsante1 = 49;
int pulsante2 = 51;
int led = 33;

void setup() {
  pinMode(led, OUTPUT);
  pinMode(pulsante1, INPUT_PULLUP);
  pinMode(pulsante2, INPUT_PULLUP);

}

void loop() {
if (pulsante1 == LOW); 
  digitalWrite(led, OUTPUT);
}

paolinux78:
Salve a tutti e buon anno! nel mio prototipo dovrei far si che premendo il pulsante1 si accenda un led, però una volta premuto il pulsante2 parte una specie di conto alla rovescia(per esempio di 10 secondi) che una volta arrivato a 0, non mi permette più di accendere il led col pulsante1, che strada devo prendere?

int pulsante1 = 49;

int pulsante2 = 51;
int led = 33;

void setup() {
 pinMode(led, OUTPUT);
 pinMode(pulsante1, INPUT_PULLUP);
 pinMode(pulsante2, INPUT_PULLUP);

}

void loop() {
if (pulsante1 == LOW);
 digitalWrite(led, OUTPUT);
}



ma che significato hanno di preciso :o 
int pulsante1 = 49;
int pulsante2 = 51;
int led = 33;

sto usando un arduino mega

>elrospo: ... ti rendi conto che sbagli in quasi tutti i post i QUOTE, mischiando quello che dice il quotato con la tua risposta ? ? ?

Non solo, ma come ho avuto modo di ripetere tante volte, quando si quota un post, NON è necessario riportarlo (inutilmente) tutto; bastano poche righe per far capire di cosa si parla ed a cosa ci si riferisce, inoltre, se si risponde al post immediatamente precedente, normalmente NON è necessario alcun "quote" dato che è sottinteso. :slight_smile:
Gli utenti da device "mobile" (piccoli schermi) ringrazieranno per la cortesia :wink:

Cortesemente sistema il tuo post sopra, grazie :slight_smile:

Guglielmo

la prima cosa che mi viene in mente....

aggiungi una variabile

bool fineTimer = 0;

parte il timer e alla fine dei 10 secondi

fineTimer = 1;

quindi il tuo IF diventa

if ((pulsante1 == LOW) && (fineTimer == 0)) {

 [vario ed eventuale]

}

tra l'altro nel tuo codice sul primo post

void loop() {
if (pulsante1 == LOW);
  digitalWrite(led, OUTPUT);
}

il punto e virgola dopo LOW) non ci va, ed il digitalWrite per il led puó essere HIGH, 1, LOW, 0 , non OUTPUT

if (pulsante1 == LOW) digitalWrite(led, HIGH);

oppure se devi mettere piú istruzioni

if (pulsante1 == LOW) {
 digitalWrite(led, HIGH);
 [altra istruzione]
  [e ancora]
}

ho fatto come hai detto te ed ha funzionato!!
ho aggiunto una libreria per semplificarmi col timer, molto più intuitiva di usare i millis, ecco il codice:

#include <neotimer.h>

bool fineTimer = 0;

Neotimer mytimer = Neotimer(5000);


void setup() {
  pinMode (33, OUTPUT);
  pinMode (53, INPUT_PULLUP);
  pinMode (49, INPUT_PULLUP);

}

void loop() {
  if (digitalRead(49) == LOW)  {
    mytimer.start();
  }
  if (mytimer.done()) {
    fineTimer = 1;
  }
  if ((digitalRead(53) == LOW) && (fineTimer == 0)) {
    digitalWrite(33, HIGH);
  }
}