[RISOLTO] Problema analogRead + pulsante

Buongiorno a tutti. Come da titolo ho un problema banale con la lettura di un pulsante collegato su un ingresso analogico. Il collegamento è semplice: il pulsante è collegato tra D2 ed A0, dove su A0 vado a leggere il valore di tensione che fornisco tramite D2 (D2 alto > leggo stato pulsante > D2 basso).

Ho bisogno di controllare tramite D2 la presenza della tensione perchè vorrei evitare problemi sul lungo periodo (è all'aperto) e quindi preferisco avere tensione sul pulsante solo il tempo necessario per acquisire lo stato dello stesso - ecco perchè non ho fatto il collegamento a massa del pulsante + lettura digitale con pullup interni.

Il problema è che analogRead mi legge 1023 a contatto chiuso e 980 a contatto aperto, perchè (mi aspettavo 1023 e 0)?

Un pull-up/down ti serve comunque, altrimenti a pulsante non premuto l'input è comunque floating.

Non sono un esperto, ma a mio parere ti stai complicando la vita senza motivo: attiva il pull-up interno e metti a gnd l'altro lato del pulsante, è perfettamente sicuro!

E se usassi A0 come ingresso digitale con pull-down interno (digitalWrite(14, LOW))?

Non esistono pull-down interni, solo pull-up...

Sei partito dall’errata convinzione che un ingresso analogico scollegato debba fornirti 0.
Come vedi, è diverso.
Se c’è anche un filo che funge da antenna (essendo scollegato), hai costruito una rozza versione del “misuratore campi elettromagnetici”.

Te la cavi con una R da A0 verso GND, che migliorerà la lettura.

Ok. Quindi o resistenza (10k?) o cambio il collegamento portandolo tra massa e ingresso (a questo punto tanto vale che uso D2 per leggere, così A0 lo libero per altro).