Go Down

Topic: Arduino ShiftOut - Aiuto (Read 348 times) previous topic - next topic

toti94

Ragazzi ho visto un po' varie guide sullo shift out, ma non ho ben capito il ragionamento che usano per far accendere gli 8 led con un 74HC595.
potreste spiegarmi la logica? perchè ho provato con
Code: [Select]
shiftOut(dataPin, clockPin, MSBFIRST,3);
e mi si accendono i primi 2 led O.o?
se scrivo 8 mi si accende il 4° led ...
Potreste aiutarmi?

yoshi93

Credo che semplicemente il numero passato come ultimo parametro alla funzione equivalga ai led da accendere e devi vederlo in binario. Ad esempio se metti 3 non si accende il terzo led perchè 3 in binario diventa: 00000011 che equivale al primo ed al secondo led accesi perchè ci sono degli 1 nelle posizioni corrispondenti.
Tanto per la cronaca: 8=00001000 --> 1 alla 4° posizione.

toti94

quindi devo dargli la combinazione di settato non-settato col binario? oppure devo drglielo in decimale e farlo equivalere alla serie binaria?

yoshi93

Dipende da cosa può accettare shiftOut come ultimo parametro. Quasi sicuramente mettendo un 0b davanti al numero binario il compilatore lo accetta esempio:
Code: [Select]
shiftOut(dataPin, clockPin, MSBFIRST,0b00000011);
Prova e vedi se funziona. Nel caso usi i decimali.

nid69ita

Come ti ha detto @yoshi devi ragionare in binario.
Se guardi un datasheet, leggerai 74HCT595=8-bit serial-in, parallel-out.
Ovvero questo vuol dire (semplificando) che l'integrato accetta in seriale (ovvero su un filo) un valore a 8 bit, poi lui per ogni bit pilota 8 linee (parallelo).
0b01010101->accendi i led alternati
my name is IGOR, not AIGOR

leo72


Ragazzi ho visto un po' varie guide sullo shift out, ma non ho ben capito il ragionamento che usano per far accendere gli 8 led con un 74HC595.
potreste spiegarmi la logica? perchè ho provato con
Code: [Select]
shiftOut(dataPin, clockPin, MSBFIRST,3);
e mi si accendono i primi 2 led O.o?
se scrivo 8 mi si accende il 4° led ...
Potreste aiutarmi?

Ed è giusto così. Come ti hanno spiegato, lo shift register trasforma in segnali per i corrispondenti pin i bit che riceve.
3 è 0b00000011 in binario, per cui accende proprio il 1° ed il 2° led.
8 in binario è 0b00001000 per cui, giustamente, accende il 4° led.

Se spedisci 0b10101010 vedrai che accenderai i led alternativamente

Go Up