riconoscimento periferiche rimovibili

è il mio primo progetto e vorrei trovare risposta a una domanda che non oso verificare
se arduino è acceso posso staccare un circuito attaccato tramite pin in -out e poi riattaccarlo su altri pin in-out?
se così non fosse, tramite un parallelo potrei farlo?
Il circuito in questione sarebbe una resistenza che il codice deve riconocere come univoca.
Ecco perché il titolo del post, credo che tramite un valore univoco di tensione tramite range di resistori, posso riuscire a far riconoscere un circuito periferico e farlo diventare rimovibile tramite un connettore in parallelo.

JimboJambo2:
è il mio primo progetto e vorrei trovare risposta a una domanda che non oso verificare
se arduino è acceso posso staccare un circuito attaccato tramite pin in -out e poi riattaccarlo su altri pin in-out?
se così non fosse, tramite un parallelo potrei farlo?
Il circuito in questione sarebbe una resistenza che il codice deve riconocere come univoca.
Ecco perché il titolo del post, credo che tramite un valore univoco di tensione tramite range di resistori, posso riuscire a far riconoscere un circuito periferico e farlo diventare rimovibile tramite un connettore in parallelo.

sei tu a scrivere il codice e a decidere cosa fa arduino
di certo non è in grado di riconoscere un circuito di resistenze come fa un pc con una periferica plug and play, la periferica quando la colleghi si "presenta" cioè dice chi è e cosa fa, un circuito di resistenze non può farlo

edit
poi ovviamente puoi scrivere un codice che fa si che se è presente una certa tensione su un certo pin fa qualcosa e se è presente la stessa tensione su un altro pin fa qualcos'altro

Non é il problema aggiungere una resistenza per fare un partitore resistivo o metter il pin a massa quando ha una resistenza Pullup montata.
Il problema é l'alimentazione del circuito che vuoi attaccare. Quello deve essere aliemtnato prima di ricevere tensione sui pin di segnale. Se guardi nei sistemi pulu and play é realizzata perché certi pin sono piú lunghi oppure un opportuno circuito gestisce lo stacco e riattacco.

Ciao Uwe

grazie delle risposte, mi vado a studiare plug and play con arduino e torno ad aggiornarvi.
ma rispiego ancora la situazione perché non mi par chiara.
ho degli interruttori che arduino deve riconoscere a prescindere dal pin a cui vengono attaccati.
Per ogni pin c'è un solo interruttore.
Ho pensato di realizzarlo mettendo una resistenza pesata in serie all'interruttore, alimentati da una corrente uguale per tutti i pin.
Quando il circuito è chiuso ritorno un czertovalore di tensione unico per ogni resistenza.
A questo punto il codice sa che quel valore di tensione corrisponde a una tessera univoca del gioco e fa una mappa dei pin.
Se fin qui è tutto realizzabile, vorrei prima accendere arduino e metterlo in ascolto su tutti i pin dedicati, e poi attaccare uno ad uno gli interruttori con le resistenze e farglieli riconoscere facendogli ricevere la tensione univoca per ogni tessera.

Grazie lucaleo e Uwe

re edit:
Uwe, potresti gentilissimamente farmi una ricerca su circuiti che gestiscono stacco e riattacco? non trovo assolutamente nulla.
a giorni proverò con mano sia gli interruttori che le resistenze.
Dopodiché disegnerò uno shield che mi tenga ogni piedino collegato a un solo connettore (che pensavo potesse essere un mini jack audio, ma se qualcuno ha un'idea migliore non si formalizzi a dirmi che il jack è una boiata). Al cui connettore andranno attaccate le tessere con interruttore e resistenza... (ma non è utile mettere anche un condensatore in entrata su ogni tessera? )

JimboJambo2:
ho degli interruttori che arduino deve riconoscere a prescindere dal pin a cui vengono attaccati.
Per ogni pin c'è un solo interruttore.
Ho pensato di realizzarlo mettendo una resistenza pesata in serie all'interruttore, alimentati da una corrente uguale per tutti i pin.
Quando il circuito è chiuso ritorno un czertovalore di tensione unico per ogni resistenza.
A questo punto il codice sa che quel valore di tensione corrisponde a una tessera univoca del gioco e fa una mappa dei pin.

Questo lo puoi fare solo sui pin analogici, dove puoi leggere un valore corrispondente alla tensione applicata in ingresso. Variando la R collegata al pulsante, puoi sapere qual è stato collegato al pin che stai esaminando. Sui pin digitali puoi avere solo un'informazione di 1 oppure 0, ossia un segnale alto oppure basso. I pin analogici sono limitati a quelli indicati con A0..A5.

hai ragione non essendo pratico, non avevo pensato che i pin digitali sono binari.
Bene, ora devo cercare una scheda con 25 pin analogici ahahah :stuck_out_tongue_closed_eyes:
Ma il collegamento in caso analogico occupa sempre un pin out e un input analogico, e poi tutto a massa?

Ci sono dei port expander che puoi collegare all'Arduino. Anche per gli input analogici, come il 4051.
http://playground.arduino.cc/learning/4051

leo72:
Ci sono dei port expander che puoi collegare all'Arduino. Anche per gli input analogici, come il 4051.
Arduino Playground - HomePage

grazie, ma la configurazione vincente è stata 25 digital pin e 1 analog

L'esperimento è andato a buon fine.
Una resistenza diversa dopo ogni switch, tutti collegati in parallelo.
Subito dopo il piedino in uscita di ogni switch, prima della resistenza, un collegamento al digitalRead(x).
Ogni resistenza collegata in parallelo a terra, dal quale collegamento , prima della resistenza per il GND sarà collegato l'analogRead().

Nel codice suonerà un più o meno così

//ciclo di mapping della posizione delle tessere
if(digitalRead(x))
     Serial.println("il pin x ha questo valore: "+analogRead(A0));
//fine ciclo che sarà probabilmente un while piuttosto che una for

così, nel caso uno switch viene chiuso l'analog read segnala il valore di tensione relativo solamente al digital pin in stato HIGH.
Questo mi assicura il riconoscimento univoco in fase iniziale di mapping, di periferiche indipendenti dal digital pin tra una partita e l'altra (ricordo che stiamo parlando di un gioco il cui ordine dei tasti deve poter essere cambiato tra una partita e l'altra).

Tutto questo dovrebbe essere fatto in fase di setup(). Ora il prossimo scoglio.
Come mai durante il setup() queste istruzioni mi vengono eseguito all'infinito e non solamente una volta?