Pages: [1]   Go Down
Author Topic: Arduino ShiftOut - Aiuto  (Read 299 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Sr. Member
****
Karma: 4
Posts: 342
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Sr. Member
****
Karma: 4
Posts: 342
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

ivrea (to)
Offline Offline
Faraday Member
**
Karma: 86
Posts: 4934
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

my name is IGOR, not AIGOR

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

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


Pages: [1]   Go Up
Jump to: