Pages: [1]   Go Down
Author Topic: ShiftOut e 74hc595  (Read 781 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 147
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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 23015
Logic is my way
View Profile
WWW
 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: 758
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: 147
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: 758
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


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 23015
Logic is my way
View Profile
WWW
 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: 758
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)
Online Online
Brattain Member
*****
Karma: 271
Posts: 21881
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Qi capisco ma Qa?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 23015
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Vieni Qi che te lo spiego  smiley-yell
Logged


Taranto, Puglia
Offline Offline
God Member
*****
Karma: 1
Posts: 758
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"

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 23015
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Occhio che Qi ci bannano  smiley-wink
Logged


Pages: [1]   Go Up
Jump to: