Loading...
Pages: [1]   Go Down
Author Topic: ShiftOut e 74hc595  (Read 387 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 122
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
   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...
Logged

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16547
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-confuse
http://arduino.cc/en/Reference/Bit
Logged


Taranto, Puglia
Offline Offline
God Member
*****
Karma: 1
Posts: 755
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
   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:
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:
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  smiley-grin
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 122
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Taranto, Puglia
Offline Offline
God Member
*****
Karma: 1
Posts: 755
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged


Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16547
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Taranto, Puglia
Offline Offline
God Member
*****
Karma: 1
Posts: 755
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 162
Posts: 15760
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Qi capisco ma Qa?
Logged

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16547
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vieni Qi che te lo spiego  smiley-yell
Logged


Taranto, Puglia
Offline Offline
God Member
*****
Karma: 1
Posts: 755
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Vieni Qi che te lo spiego  smiley-yell

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


Italy
Offline Offline
Full Member
***
Karma: 6
Posts: 102
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non riesco a credere che tu sia Qi, ma se Qo e Qa me lo confermano..... smiley-mr-green
Logged

"The question is not whether intelligent machines can have emotions, but whether machines can be intelligent without any emotions"

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16547
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Occhio che Qi ci bannano  smiley-wink
Logged


Pages: [1]   Go Up
Print
 
Jump to: