Go Down

Topic: ShiftOut e 74hc595 (Read 795 times) previous topic - next topic

max95

Ciao a tutti

in questi giorni sto facendo test (ma soprattutto ricerche) sul funzionamento di ShiftOut....

La mia idea era di andare a pilotare 6 uscite sfruttando solo 3 digital output di arduino...

Benissimo allora tanto per provare ho inserito un LED per ciascuna delle seguenti uscite:

Qb, Qc, Qd, Qe, Qf, Qg




e avendo letto qui: http://arduino.cc/en/Reference/shiftOut

e avendo chiara la sintassi
Code: [Select]
   shiftOut(dataPin, clockPin, LSBFIRST, j);  

non mi è chiaro come e dove ricavo i valori di j per pilotare in modo corretto le uscite...

se qualcuno potesse farmi chiarezza, perchè tutti gli esempi del web usano cicli for ma io non devo fare un ciclo, a seconda delle necessità devo attivare 0,1,2,3,4,5,6 uscite...

leo72

Il valore di "j" lo devi calcolare tu.
Devi rifarti alla logica binaria, dove ogni numero nella memoria dei microcontrollori è memorizzato dividendolo in byte e questi ultimi in bit.
Avendo il 595 8 uscite, devi quindi usare 8 bit. 8 bit sono 1 byte. Quindi dichiari "j" di tipo byte.
A questo punto se metti in un bit il valore 0 quel pin sul 595 verrà messo su Low, se metti un bit a 1, quel bit indicherà che il corrispondente pin sul 595 dovrà essere messo su High.

Ti consiglio di proseguire qui:
http://arduino.cc/en/Tutorial/ShiftOut
http://arduino.cc/en/Reference/BitwiseAnd :~
http://arduino.cc/en/Reference/Bit

igor10^12


Ciao a tutti

in questi giorni sto facendo test (ma soprattutto ricerche) sul funzionamento di ShiftOut....

La mia idea era di andare a pilotare 6 uscite sfruttando solo 3 digital output di arduino...

Benissimo allora tanto per provare ho inserito un LED per ciascuna delle seguenti uscite:

Qb, Qc, Qd, Qe, Qf, Qg




e avendo letto qui: http://arduino.cc/en/Reference/shiftOut

e avendo chiara la sintassi
Code: [Select]
   shiftOut(dataPin, clockPin, LSBFIRST, j);  

non mi è chiaro come e dove ricavo i valori di j per pilotare in modo corretto le uscite...

se qualcuno potesse farmi chiarezza, perchè tutti gli esempi del web usano cicli for ma io non devo fare un ciclo, a seconda delle necessità devo attivare 0,1,2,3,4,5,6 uscite...


lo stesso mio problema di una volta  :smiley-mr-green:
allora ceerco di aiutarti
innanzitutto prima di dare il comando shiftOut devi abilitare il latch per poter aprire la ricezione dei dati
Code: [Select]

digitalWrite(latchPin, LOW);
   shiftOut(dataPin, clockPin, LSBFIRST, j);  
digitalWrite(latchPin, HIGH);

quella j non è altro che un byte dove in ogni bit lo zero corrisponde a led spento e a 1 led aceso;
se per esempio vuoi accendere tutti i led basterà mettere al posto di j questo: 0b11111111 (in binario), in esa 0xFF, in decimale 255
in quel codce del reference la j non è altro un numero da 0 a 255 che fa accendere in una certa sequenza i led
Altro esempio:
vuoi accendere un led si e uno no allora fai cosi
Code: [Select]

digitalWrite(latchPin, LOW); //apri trasmissione
shiftOut(dataPin, clockPin, MSBFIRST, 0b10101010); //invia i valori di Qx
digitalWrite(latchPin, HIGH); //chiudi trasmissione e imposta i valori di Qx



spero di non aver detto niente di sbagliato  :smiley-sweat:
ciao  :D

max95

Fantastico ora ho capito!!!!

per chi vuole attivare output "singoli" basta usare:

Qb = 0b00000010
Qc = 0b00000100
Qd = 0b00001000
Qe = 0b00010000

e cosi via...

grazie ancora... :smiley-mr-green:

igor10^12


Fantastico ora ho capito!!!!

per chi vuole attivare output "singoli" basta usare:

Qb = 0b00000010
Qc = 0b00000100
Qd = 0b00001000
Qe = 0b00010000

e cosi via...

grazie ancora... :smiley-mr-green:

ma Qa ti ha fatto qualcosa che non lo metti?  :smiley-yell:

leo72

Su Qi e Qa il bit non va!  :smiley-yell: :smiley-yell:

igor10^12


uwefed


leo72

Vieni Qi che te lo spiego  :smiley-yell:

igor10^12


Vieni Qi che te lo spiego  :smiley-yell:


adesso ci vuole il ROTFL ahahahaha  :smiley-yell: :smiley-yell:

superp

Non riesco a credere che tu sia Qi, ma se Qo e Qa me lo confermano..... :smiley-mr-green:
"The question is not whether intelligent machines can have emotions, but whether machines can be intelligent without any emotions"

leo72

Occhio che Qi ci bannano  ;)

Go Up