Arduino con encoder assoluto

Un saluto a tutti gli iscritti al forum.
Ho da poco cominciato i miei primi test con un Arduino 2009 ed un Arduino Mega, eseguendo tutti gli esempi presenti sul sito.
Sono stato però sempre convinto che un buon metodo per imparare è quello di 'sbattere il muso' su un problema reale, in questo caso realizzano circuiti che abbiano una pratica ed immediata applicazione..
Per questo mi sto cimentando nell'interfacciare un encoder assoluto che ha in uscita un codice binario.
Questo encoder traduce la misura dell'angolo in un numero binario che riporta all'esterno con una uscita parallela a 12 pin.
Ho intenzione di collegare i singoli pin ad altrettante ingressi digitali dell'Arduino Mega e qui noscono i miei problemi.
Leggendo la documentazione sul sito, non sono stato in grado di realizzare o utilizzare una funzione che mi permetta di leggere ' l'immagine ' dei pin in ingresso e tradurla in un numero binario da convertire successivamente nella misura dell'angolo.
Secondo voi sto utilizzando un approccio corretto per la soluzione del problema o suggerite un'altro metodo per l'acquisizione della lettura dell'encoder ?
O forse mi sono posto un problema troppo grande per le esperienze di un neofita ?

Grazie a tutti.

while(pin < 12);{
if(digitalRead(pin)==HIGH) numero = numero + 2^pin;
pin++;}

dovrebbe restituirti il numero che corrisponde al binario che hai in ingresso

unico dubbio il costrutto '2^pin' funzionerà?
ricorda di portare a zero le variabili prima di iniziare
se hai 12 pin dichiara numero come int

saputo il valora massimo (che sarà 2^13-1)
fai un proporzione e lo porti su una scala che va da 0 a 360

x : 360 = numero : (2^13-1)

x =360*numero:(2^13-1)

Grazie per la dritta. Appena posso la metto in pratica e ti aggiorno. Grazie ancora, ciao

Ho finalmente avuto il tempo di provare la funzione che mi avevi consigliato. Ho però dovuta modificarla come segue :

double numero;
double tmpGradi=0;

for (count=0;count<11;count++) {
if(digitalRead(encPinArray[count])==HIGH) numero = numero + pow(2, count);
}

tmpGradi=(360 * numero) / 2047;

Non ho capito come mai ma il ciclo while che mi consigliavi non 'ciclava'. Il tuo consiglio è stato comunque molto importante, grazie