COMBINAZIONE CASSAFORTE ARDUINO[PROBLEMA]

Ciao a tutti ragazzi,ho un urgente bisogno di capire come mai il mio progetto non funzioni correttamente..praticamente il mio obbiettivo sarebbe quello di creare una combinazione a tre numeri(i numeri verranno inseriti tramite 3 pulsanti)e una volta inserita la combinazione esatta,si accenderà un led che segnali l'ipotetica apertuta della cassaforte...ho controllato varie volte il programma ma mi sembra tuuto okay....credo che il problema sia nel mio montaggio,se qualcuno mi può aiutare ne sarei molto contento,poichè una volta che do un impulso sia l primo pulsante...sia al secondo ed in fine al terzo pulsante..il led che si dovrebbe accendere rimane spento.. :cold_sweat:

foto del montaggio:
il montaggio èstato fatto in maniera sbrigativa..nel caso serva spieghero al meglio come ho struttuato il monaggio..

QUESTO è LO SKETCH:

const int Pulsante1=5;
const int Pulsante2=6;
const int Pulsante3=7;
const int LED=13;
int Livello1,Vecchiostato1,Conta1;
int Livello2,Vecchiostato2,Conta2;
int Livello3,Vecchiostato3,Conta3;
void setup()
{
pinMode(Pulsante1,INPUT);
pinMode(Pulsante2,INPUT);
pinMode(Pulsante3,INPUT);
pinMode(LED,OUTPUT);
Serial.begin(9600);
Vecchiostato1=LOW;
Vecchiostato2=LOW;
Vecchiostato3=LOW;
Conta1=0;
Conta2=0;
Conta3=0;
}
void loop() 
{
Livello1=digitalRead(Pulsante1);
Serial.println(Conta1);
if (Livello1==HIGH && Vecchiostato1==LOW)
{
Conta1=Conta1 + 1;
}
Vecchiostato1= Livello1;
Livello2=digitalRead(Pulsante2);
Serial.println(Conta2);
 if (Livello2==HIGH && Vecchiostato2==LOW) 
 {
  Conta2=Conta2 + 1;
 }
 Vecchiostato2=Livello2;
 Livello3=digitalRead(Pulsante3);
 Serial.println(Conta3);
 if (Livello3==HIGH && Vecchiostato3==LOW) 
 {
  Conta3=Conta3 + 1; 
 }
 Vecchiostato3=Livello3;
 if (Conta1==1 && Conta2==1 && Conta3==1) 
 digitalWrite(LED,HIGH);
}

>Forlis: in conformità al REGOLAMENTO, punto 13, il cross-posting è proibito (anche tra lingue diverse) e tu hai già posto la stessa domanda in area di lingua Inglese, per di più usando la lingua Italiana, cosa che NON è ammessa.

A seguire, NON avendolo tu ancora fatto, ti chiedo di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto :wink:) e di leggere con MOLTA attenzione il REGOLAMENTO ...

... poi, in conformità al suddetto regolamento, punto 7, devi editare il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra) ...

... infine, il tuo post in lingua Italiana nella sezione inglese è stato cancellato.

Niente male come inizio ...

Guglielmo

per quello che ne capisco penso che ti conteggi anche i rimbalzi del pulsante facendo lievitare il valore dei vari "conta", prova dopo che incrementi la variabile ad inserire un delay(500), inoltre per come hai scritto il programma basta premere per sbaglio due volte lo stesso pulsante e il led non si accenderà mai, dovresti fare un pulsante di reset per azzerare le tre variabili o ad ogni inserimento errato resettare arduino

... molto probabile che tu abbia ragione -zef-, non vedo infatti nel codice alcuna tecnica di debouncing né vedo nella realizzazioni reti R/C per farlo via HW.

>Forlis: considera che tu hai scritto il programma pensando a dei bottoni "ideali", purtroppo quelli "reali" funzionano in tutt'altro modo ...

... ovvero, ad ogni pressione e rilascio hai in realtà una serie di LOW ed HIGH che ... naturalmente tu vai a contare.

Devi quindi applicare una tecnica di "debouncing" ... cerca su Google "Arduino Debouncing" ...

Guglielmo

Grazie mille per il vostro aiuto