Conoscere i pin in uso

Salve,
è possibile sapere quali pin sono attualmente in uso su arduino?? indipendentemente dal digitalRead(pin) che ti dice lo stato. vorrei sapere a quali pin è collegato qualcosa

non esiste alcun modo??

Non penso.
Pensa di essere il micro: come fa a poter sapere se c'è qualcosa di collegato ad un pin, rimanendo all'interno di un package, senza effettuare una lettura del pin stesso?
A questo punto, hai 2 casi:

  1. c'è un dispositivo collegato, ma non trasmette nulla. Il risultato è incerto: il micro non sa se c'è qualcosa.
  2. c'è un dispositivo collegato che sta trasmettendo: il micro vede che c'è qualcosa.

grazie mille per la risposta...
ma come faccio a capire se un dispositivo sta trasmettendo in termini di codice??

se non c'è nulla di collegato ad un pin e lo usi come input noterai che il suo valore è casuale.. Se conosci il protocollo di comunicazione del componente che vuoi utilizzare, puoi ogni tot tentare di stabilire una comunicazione, se la risposta fallisce allora non c'è collegato nulla :slight_smile:

Difatti è quello che ho detto al punto 2. Se c'è qualcosa che trasmette, puoi leggere il pin ogni tot per verificare.

Se poi il problema è far "svegliare" l'Atmega, potrebbe agganciare il dispositivo su un pin collegato ad un interrupt ed usare questo per far eseguire una qualche azione.

devo semplicemente collegare dei relè

Scusa, allora non ho capito la domanda.... lo sai a priori se il relé è collegato o no...

sto realizzando un app in java che comunica attraverso socket con arduino. Ogni volta che il client si mette in contatto con il server, quest'ultimo deve comunicargli quanti relè ci sono collegati, e quindi quanti e quali pin sono utilizzati... si potrei farlo anche a mano però sarebbe più carino se avvenisse tutto in automatico.

Cosa usi come driver per i relé?
Se usi un ULN2803, quello ha 3 resistenze interne che in somma consiste di una resistenza di 13kOhm verso massa.

Se colleghi su tutti i pin delle resistenze da 470 kOhm a +5V puoi sapere con un digitalRead() se é colegato un driver ULN2803. Perché funzioni devi collegare i driveer solo se c'é collegato il rispettivo relé. Il metodo piú semplice per collegare solo quelle entrate del ULN2803 i cui rispettive uscite sono dei relé collegate sono 2 pin e un ponticello come:

oppure prevedere 2 punti di saldatura vicine che cortocircuiti con stagno a seconda delle entrate usate.

Indicati dalle 2 righe in cento alla schedina.
Ciao Uwe