Leggere contatto pulito con Arduino

Buongiorno ragazzi,
mi serve leggere un contatto pulito con Arduino. Ho collegato i 5v ad una resistenza 1k, l'uscita è connessa ad una morsettiera che se mi chiude il contatto mi va a finire sul pin 5.
Il mio problema è che nella seriale il codice continua a leggere un attimo 0 e un attimo 1 senza collegare un ponticello.
Nel caso in cui collego il ponticello il codice continua a leggere 1, quindi chiuso contatto, senza problema.
Come posso risolvere?
Grazie
Giuseppe

#define CONTATTO 5                                // pin in input collegato al pin digitale 5  

int StatoPorte;

 StatoPorte = digitalRead(CONTATTO); 
   if (StatoPorte == 0) {                   // controlla lo stato delle porte 
        Serial.print("Porte Aperte!");
                Serial.println(StatoPorte, DEC);
//      digitalWrite(4, LOW);                              // accende il led  
      }  
   if (StatoPorte == 1) {                    
        Serial.print("Porte chiuse!");
                        Serial.println(StatoPorte, DEC);
//      digitalWrite(4, HIGH); 
      }

Metti una resistenza tra il pin e massa.

Grazie mille...questa sarebbe una resistenza di pullup?basta da 1 k?

Pull-UP sarebbe verso Vcc, verso massa si chiama pull-DOWN. Usi la prima se il tuo contatto chiude a massa, la seconda se chiude a Vcc. Un valore molto usato è 10k, ma in realtà va bene qualunque valore, vedi quel che hai.

SukkoPera:
Pull-UP sarebbe verso Vcc, verso massa si chiama pull-DOWN. Usi la prima se il tuo contatto chiude a massa, la seconda se chiude a Vcc. Un valore molto usato è 10k, ma in realtà va bene qualunque valore, vedi quel che hai.

Perfetto,provata e funziona alla grande grazie :smiley:

Da quanto l'hai messa la resistenza ?

Brunello:
Da quanto l'hai messa la resistenza ?

da 1K ma non è precisa la cosa.Mi spiego meglio.
Se avvio arduino il contatto non me lo legge chiuso. Devo scollegarlo e ricollegarlo.
Come faccio a leggere da subito la chiusura?

Devi usare per la resistenza di PullDown un valore più alto, ad esempio 10K

In pratica hai un collegamento simile a questo


Dove R1 e' la tua resistenza da cui arrivano i 5V, R2 è la reisstenza di PullDown che hai aggiunto
Se fai il calcolo vedi che con le due reistenze uguali hai in uscita la meta' della tensione, 2.5V.
Un valore basso perche' Arduino lo interpreti con HIGH

Brunello:
Devi usare per la resistenza di PullDown un valore più alto, ad esempio 10K

In pratica hai un collegamento simile a questo


Dove R1 e' la tua resistenza da cui arrivano i 5V, R2 è la reisstenza di PullDown che hai aggiunto
Se fai il calcolo vedi che con le due reistenze uguali hai in uscita la meta' della tensione, 2.5V.
Un valore basso perche' Arduino lo interpreti con HIGH

Ho messo da 1k perchè avevo letto in giro sul forum che bastava anche da 1k. Messa da 10, alimento arduino e mi rileva subito il contatto chiuso. Grazie :smiley:
Sto facendo un sistema di allarme :slight_smile: