Domandina su resistenze di pulldown per pulsanti

Uso sempre la resistenza da 10k quando collego un pulsantino ad Arduino, ma è proprio necessaria la resistenza?
Senza la R l'Arduino si danneggia o solo lo stato rimane indefinito? (nè HIGH nè LOW)

Se dai un'occhiata agli esempi base trovi la spiegazione. Ti riporto il link relativo:

in cui ti spiega la necessità della resitenza di pull-up o di pull-down a seconda di come colleghi il pulsante. In pratica senza avresti un valore indefinito.

"If you disconnect the digital i/o pin from everything, the LED may blink erratically. This is because the input is "floating" - that is, it will randomly return either HIGH or LOW. That's why you need a pull-up or pull-down resistor in the circuit."

ok, questo l'ho capito, ma la mia domanda era: senza resistenza di pull down / up arduino si danneggia?

Se al posto della resistenza usi un filo, quando chiudi l'interruttore fai un corto tra la tensione di alimentazione di 5V e la massa... vedi tu :smiley:

Mi spiego meglio.
Se proprio non metti alcuna resistenza e alcun filo al suo posto, ma colleghi solo il pulsante ti ritrovi con uno stato certo quando premi il pulsante ed uno stato indefinito (che può essere alto o basso) quando non premi il pulsante (facendo riferimento allo schema del link di esempio). Ad Arduino non succede nulla.
Se invece sostituisci la resistenza con un semplice filo vale quanto detto sopra.

Ciao

PS: almeno dovrebbe essere così... eventualmente qualcuno mi smentisca se ho detto uno strafalcione :roll_eyes:

Non e' che "si danneggia per forza" se non c'e' una resistenza di pulldown o pullup, semplicemente non funziona correttamente.

Poi a livello "statistico" c'e' piu probabilita' di danneggiare un pin non collegato a nulla che uno collegato al resto del circuito tramite una resistenza, per mezzo di scariche statiche o picchi di disturbo indotti, ma questo dipende anche dal resto del ciecuito e da come lo si usa.

okok, ho capito.

La resistenza di pullup o pulldown da un valore di H o L quando il pulsante non é premuto. Quando premi il pulsante questo port il livello L o H al pin di entrata di Arduino e fa circolare una corrente attraversa la resistenza perche in quel momento é collegata a massa e all alimentazione. Questo é una cosa non voluta ma é cosí.
Se non metti una resistenza il pin non ha un livello di tensione definito ma la lettura dipende dai disturbi che prende. Puoi avere sia H che L ed é casuale e dipende anche dalla Tua presenza e dalla presneza di altri apparecchi elettrici/elettronici nelle vicinaze.
PEr questo uan resistenza pullup o pulldown é necessaria. Arduino ha delle ressitenze Pullup integrate che puoi attivare e usare senza dover collegare una resistenza esterna.

Il valore 10kOhm é un valore intermedio che non fa circolare troppa corrente quando il pulsante é premutio e che polarizza l' entrata in modo sufficentemente stabile in modo che disturbi elettromagnetici non influenzano il livello logico letto dal pin. Per risparmiere corrente puo usare anche valori piú alti, ma sempre sotto il 1MOhm (senó la corrente parasitaria del pin potrebbe disturbare la lettura.

Ciao Uwe

Ok, ma non penso che ha senso aumentare la resistenza dato che la corrente che attraversa la R da 10k è pochissima...