SELETTORE BCD

Buongiorno a tutti.
Sono neofita e avrei bisogno di una delucidazione. Come faccio a leggere un selettore BCD?

lightman750:
Buongiorno a tutti.
Sono neofita e avrei bisogno di una delucidazione. Come faccio a leggere un selettore BCD?

A cosa ti riferisci, ad un contraves o a uno switch rotativo? un'immagine?

selettore rotativo 10 posizioni. uscita 4 pin + pin comune.

le immagini come le inserisco??

lightman750:
le immagini come le inserisco??

Quando sei in fase di inserimento del tuo post, clicca su "Additional Options" che c'è sotto all'area di testo del post a sinistra e poi su "Scegli file"

Questo l'immagine del selettore:

t_3530252-01.jpg

Qualcuno conosce il timer MS Timer2?

Questo può aiutarti?

lightman750:
Qualcuno conosce il timer MS Timer2?

MsTimer2 non è un timer, è una libreria che gestisce il timer2
http://arduino.cc/playground/Main/MsTimer2
Che ti serve sapere?

L'encoder rotativo, a mio parere, è una sorta di generatore di impulsi, sfasati in base al fatto che ruoti a sinistra o a destra che possono essere conteggiati per poi svolgere una funzione (p.es. un controllo di volume). Ruotandolo (è una sorta di vite senza fine) apre e chiude i contatti tra C e A e tra C e B secondo la regola chiamata "Gray code"
01 = A
11 = A+B
10 = B
00 = nullo

Il selettore rotativo è un convertitore decimale-BCD, ad ogni posizione numerica (ben definita sulla serigrafia del componente) corrisponde la tipica combinazione binaria sui 4 pin. I 4 pin sono in grado di gestire 16 posizioni (0÷F), ma esistono anche quelli a 10 posizioni, nel quale ovviamente non si verificheranno mai le ultime sei combinazioni

lightman750:
Questo l'immagine del selettore:

Scusate quello sulla foto non é un encoder rotativo.
È un selettore tipo quelli nei vecchi dispositivi SCSI per selezionare l'indirizzo.
Praticamente sono 4 interuttori che vengono attivati dal selettore centrale. ogni numero corrisponde a una cifra in codice BCD o binario a secondo del tipo di sispositivo.
Si legge come 4 tastini.
Metti il comune a massa e i altri 4 contatti su 4 entrate Arduino attivando le resistenze pullup interne.

Ciao Uwe

Ma lui lo aveva correttamente definito un "selettore rotativo BCD", basta che guardi il titolo del TOPIC :~; siccome Leo ha tirato in ballo come possibilità l'encoder io ho spiegato il funzionamento di entrambi :slight_smile:

Allora ho letto non abbastanza bene il Tuo ultimo tread.
Mi sento piccolo e nero per la vergogna... :wink: :wink:

Ciao Uwe

uwefed:

[quote author=Michele Menniti link=topic=100540.msg754010#msg754010 date=1333968032]
Ma lui lo aveva correttamente definito un "selettore rotativo BCD", basta che guardi il titolo del TOPIC :~; siccome Leo ha tirato in ballo come possibilità l'encoder io ho spiegato il funzionamento di entrambi :slight_smile:

Allora ho letto non abbastanza bene il Tuo ultimo tread.
Mi sento piccolo e nero per la vergogna... :wink: :wink:

Ciao Uwe
[/quote]
ma va! non mangiare troppo oggi.... :wink:

NON SI TRATTA DI ENCODER

Come posso definire le posizioni del selettore? Creando nomi equivalenti le posizioni?

L' MS Timer 2 funziona indipendente dallo svolgimento del programma? Manda un'interrupt? come lo gestisco?

Per vedere bene come funziona il selettore collega i 4 pin di out ad arduino come dei bottoni , poi gli fai stampare i valori letti sulla seriale . Ti annoti i valori in base alla posizione del cursoe centrale e voilà 8) 8)
Dopo nel tuo programma con una serie di funzioni If filtri i valori letti ed ottieni la posizione
Ciao Niko

Grazie Nico. Ci proverò.

Dovresti evitare di sovrapporre due questioni nello stesso Thread, stiamo parlando del selettore, lascia perdere il timer 2 per ora.
Se hai guardato la tabella che ti ho linkato capirai come funziona il tuo selettore. Ad Arduino lo devi collegare come ti ha ben spiegato Uwe.
P.es.
Se metti la freccia su 0 sui quattro pin non rilevi alcun 0 (cerchietto bianco nella tabella) = 0
Se metti la freccia su 1 uno dei pin rileverà lo 0 logico, quello è il pin "A"
Se metti la freccia su 2 uno dei pin rileverà lo 0 logico, quello è il pin "B"
Se metti la freccia su 4 uno dei pin rileverà lo 0 logico, quello è il pin "C"
Se metti la freccia su 8 uno dei pin rileverà lo 0 logico, quello è il pin "D"
tutti gli altri valori sono combinazioni di questi 4 fondamentali, p.es.:
Se metti la freccia su 3 due pin rileveranno lo 0 logico, sono i pin "A" e "B"
Ora devi divertirti col software; i 4 pin di Arduino li devi impostare come INPUP e poi devi eseguire il comando digitalWrite(pin, HIGH) su tutti è quattro in modo da attivare le R di pull-up interne, sempre come ti ha spiegato Uwe. :wink:

Sì, nell'eccesso di fornire troppe info ho mescolato la gestione degli encoder con quella dei selettori.
Il selettore lo leggi in formato binario. Per gli amanti dell'italiano:

nikone:
Dopo nel tuo programma con una serie di funzioni If filtri i valori letti ed ottieni la posizione

Forse si fa prima a dire che
Stabilito che saranno 4 ingressi con PulUp verso il positivo e quindi sempre HIGH
Farei
byte totale = 0
if ingresso1 LOW .... totale = totale +1
if ingresso2 .... totale = totale +2
if ingresso3 .... totale = totale +4
if ingresso4 .... totale = totale +8

A questo punto su totale ci sara' un numero da 0 a 9 da usare come meglio crede

Ottimo Bruno, poi ovviamente dovrà resettare tutto ad ogni nuovo ciclo di lettura; potrebbe forse usare anche uno switch case senza break; non so cosa succede esattamente all'interno di quegli aggeggi, immagino che ci siano un bel po' di rimbalzi; forse potrebbe essere necessario, se lui pensa di ruotarlo al volo durante il funzionamento, effettuare più cicli di lettura orima di dare responso.