problema lettura pulsante

salve a tutto sono nuovo in questa community ed ho approcciato da poco il mondo di arduino , un po per necessita e un po per piacere...sto avendo problemi con un programma( molto semplice, nulla di che) ...ora, tralasciando il debounce fatto con il delay e le migliaia di ripetzioni :art: ho creato questo sketch ma il problema è che il pulsante mi da valori errati infatti, anche se non lo premo, lui si attiva, anche con i cavi scollegati e me lo fa su entrambi i piulsanti...mentre con un altro sketch con il quale mi leggo semplicemente i valori nel monitor seriale mi da il problema solo al secondo pulsante

spotwelder2.0.ino (4.3 KB)

Buonasera,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

  1. SE non lo stai già facendo metti i pin dei pulsanti come INPUT_PULLUP e inverti la logica (pulsante vollegato trq pin e massa e livelli logici invertiti: premuto=LOW e rilasciato=HIGH, ipotizzando un pulsante normaomente aperto)

  2. l'anti rimbalzo software si fa usando millis() e i timer. Un antibrimbalzo con delay() é SBAGLIATO logicamente. Un anti rimbalxo, infatti, vuole dire "va bene se il pin resta nello stesso stato per X tempo", ebquibdi va verificato sempre lo statobdel pulsante. Se uso delay() verifico solo inizio e fine.

  3. se non sai usare millis() e non hai vogliabdi imparare ad usarla (prima o poi dovrai) usa l'anti rimbalzo hardware

  4. se invece vuoi imparare ad usarla hai due strade: o cerchi su google 'millis() Arduino' o guardi i post del nostro amato moderatore. Uno ogni tre circa parla di millis(), con link utili.

  5. se anche così non va bene io comincerei a dubitare fei collegamenti o dei pulsanti

Un delay() non é errato per principio. Un delay() deve essere sempre visto nel contesto del resto dello sketch. Se il sketch non fa niente d' altro un delay() puó essere una soluzione.
Un delay() non é ammissibile se ci sono altre cose che devono funzionare di continuo come per esempio la lettura di sensori o pulsanti o l'aggiornamento di display o la spedizione di dati.

Un delay(10) per fare il debounce di un pulsante puó essere una soluzione valida.

Ciao Uwe