Verificare il reale utilizzo di un PIN

Ciao a tutti,
esiste un modo per controllare se ad un PIN è collegato qualcosa? se un PIN è realmente utilizzato? la documentazione riporta

"If the pin isn't connected to anything, digitalRead() can return either HIGH or LOW (and this can change randomly)."

Effettivamente se ad un pin non è collegato nulla, arduino mi restituisce in modo casuale entrambi gli stati per quel PIN.

Grazie

pino8314:
Ciao a tutti,
esiste un modo per controllare se ad un PIN è collegato qualcosa?

Leggere lo stato di un pin settato come input non è un modo attendibile per sapere se è realmente collegato a qualcosa, purtroppo con Arduino non esiste un modo semplice per verificare se un pin è collegato, sopratutto non esiste un modo univoco applicabile a tutte le situazioni.
Per quale motivo hai bisogno di sapere se un pin è collegato ?
Ma anche a cosa dovrebbe essere collegato ?

Se da un entrata leggi casualmente HIGH o LOW potresti leggere i disturbi di un pin aperto oppure ha un circuito che segnala HIGH e LOW secondo la sua logica/funzione.

se attivi la resistenza Pullup e il coso che potrebbe essere collegato lo porta a massa allora puoi verificare la presentza. Comunque per collegare o scollegare qualcosa con Arduino alimentato si devono usare parecchie precauzioni per non rompere qualcosa.

Ciao Uwe

Sto utilizzando degli interruttori capacitivi che accendono e spengono dei LED. Lo stato di ogni singolo LED corrisponde a quello del suo interruttore.
Il problema è che se uno di questi interruttori viene disconnesso dal suo PIN, il LED corrispondente all'interruttore si accende e spegne ad intermittenza. Proprio perché se ad un PIN non è connesso nulla, questo restituisce casualmente HIGH o LOW (come da documentazione).

Vorrei poter gestire questa casistica affinché, se (ad esempio) per qualche motivo uno di questi interruttori smetta di funzionare, il LED corrispondente rimanga comunque nel suo ultimo stato d'interazione.
Se riuscissi a capire che l'interruttore non è più connesso al PIN, potrei evitare questo inconveniente.
Capisco che parlare di "connessione"/"disconnessione" può sembrare semplicistico, ovviamente non è come avere una periferica "Plug and Play" :)... al PIN arriva o meno una tensione e finisce lì... ma ci sarà un modo...

pino8314:
ì... ma ci sarà un modo...

In questo caso la soluzione è semplicissima, attiva la pullup su i pin interessati e fai in modo che l'interruttore capacitivo sia considerato premuto solo quando è a gnd, se lo stacchi il pin rimane bloccato a 1 logico.
Se l'interruttore capacitivo fornisce per forza solo 1 logico quando premuto allora devi mettere una resistenza di pull down esterna.

ottimo!! ma mi sa che dovrò optare per la resistenza esterna, perché lo stato dell'interruttore è 1 quando premuto.
Faccio delle prove e vi faccio sapere.

Grazie mille :wink:

La stessa cosa si puó fare con una resistenza esterna da 100kOhm tra pin e massa se il sensore capacitivo mette l'uscita a HIGH quando azionato.
Ciao Uwe