Pages: 1 2 3 [4]   Go Down
Author Topic: multiplexing leds  (Read 2226 times)
0 Members and 1 Guest are viewing this topic.
Tuscany
Offline Offline
Edison Member
*
Karma: 37
Posts: 1488
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
La mia perplessità è sul fatto che i led saranno più luminosi se ne accendo uno e meno se ne accendo di più
E perche' dovrebbe, visto che in multiplexing ne accendi uno alla volta

Quote
P.s. brunello che programma usi? Li fa proprio bene gli schemi!  smiley-lol
Non e' il programma... e' la mano che lo guida

Comunque questi li faccio con Fidocad
Logged

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

Ok, faro così. La mia perplessità è sul fatto che i led saranno più luminosi se ne accendo uno e meno se ne accendo di più.  P.s. brunello che programma usi? Li fa proprio bene gli schemi!  smiley-lol


Viene sempre messo solo un uscita del ULN2003 a massa e le uscite del 595 a H che corrispondono ai LED che devono accendersi di quella riga. Le resistenze sui collegamenti del 595 limitano la corrente dei LED. In questo modo la corrente attraverso i LED é sempre uguale indipendente dal numero di LED accesi.

Ciao Uwe
« Last Edit: December 16, 2012, 04:25:46 pm by uwefed » Logged

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

Ok, faro così. La mia perplessità è sul fatto che i led saranno più luminosi se ne accendo uno e meno se ne accendo di più.  
No. Ogni LED riceverà sempre una corrente costante visto che hanno tutti una propria resistenza.
Logged


Bologna
Offline Offline
God Member
*****
Karma: 5
Posts: 502
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ok. Grazie delle delucidazioni smiley-grin
Logged

Bologna
Offline Offline
God Member
*****
Karma: 5
Posts: 502
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Per adesso funziona tutto, ma non capisco il "dato" dello sketch, mi potete dare una mano?
Code:
//Il pin8 viene usato per abilitare la scrittura
//sullo shift register
int Abilitazione = 8;
//il pin11 viene usato per inviare il dato
int UscitaDatoSeriale = 11;
//Il pin12 viene usato per generare il clock
int DataClock = 12;
 
//variabile che contiene il dato da scrivere sullo
//shift register
byte dato = 0;
 
void setup()
{
  //Setto i pin come uscite
  pinMode(Abilitazione, OUTPUT);
  pinMode(DataClock, OUTPUT);
  pinMode(UscitaDatoSeriale, OUTPUT);
  //Per il serial monitor (debug)
  Serial.begin(9600);
}
 
void loop()
{
  //setto tutte le 8 uscite dello shift register a 1
  dato=0b11111111;
  //invio il valore al serial monitor
  Serial.println(dato);
  //abilita la scrittura
  digitalWrite(Abilitazione, LOW);
  //invia il dato
  shiftOut(UscitaDatoSeriale, DataClock, LSBFIRST, dato);
  //Disabilita scrittura
  digitalWrite(Abilitazione, HIGH);
  //ritardo
  delay(500);
}
Perchè devo inviare il dato come 0bxxxxxxxx? Macchinamente riesco a far accendere i led che voglio, ma vorrei approfondire la questione. Grazie!
« Last Edit: December 17, 2012, 10:00:01 am by SUBSEA » Logged

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

Ma lo sketch lo hai scritto te oppure no?
Propendo per la seconda ipotesi, visto che dici di non capire "dato"...
Sono un po' contrario alle "pappe pronte" perché si risolvono i problemi senza capire il perché.

Comunque.... un byte è un elemento della memoria del computer capace di immagazzinare 8 bit. Ogni bit rappresenta un singolo elemento della memoria, una specie di "interruttore". Come ogni buon interruttore, il bit può assumere solo 2 stati: 0 o spento, e 1 o acceso. Uno shift register contiene un registro interno ad 8 bit, ognuno dei quali governa un pin esterno. Per mettere su HIGH un pin devi impostare il corrispondente bit a 1 (interruttore acceso) e viceversa per LOW.
Puoi spedire 1 singoli bit, che dovrai posizionare con tanti colpi di clock sul relativo pin finché non raggiunge la posizione voluta, e poi spedire lo stato del registro interno sui pin esterni mediante un segnale di latch, oppure usare la funzione shiftOut che spedisce 1 intero byte, bit per bit, dove ogni bit corrisponde allo stato dei pin.
Quindi se spedisci 00000001 metterai su HIGH solo il 1° pin, con 10101010 metterai su HIGH i pin pari ecc....
Logged


Bologna
Offline Offline
God Member
*****
Karma: 5
Posts: 502
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ok, questo l'avevo capito. Non mi è chiaro come mai devo anteporre ai bit 0b...
p.s. Cos'è un segnale di latch smiley-mr-green
Logged

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

ok, questo l'avevo capito. Non mi è chiaro come mai devo anteporre ai bit 0b...
Indica al compilatore che il numero che segue deve essere trattato in forma binaria.

p.s. Cos'è un segnale di latch smiley-mr-green
"Latch" in inglese significa "paletto". In pratica è un segnale elettrico dato su un determinato pin che dice allo shift register di "spingere" (come si farebbe con un paletto che entra in una serratura) il valore dei bit del registro interno sui pin esterni. In questo modo l'1 diventa HIGH e lo 0 diventa LOW.

Ma lo sketch lo hai scritto te oppure no?
Logged


Bologna
Offline Offline
God Member
*****
Karma: 5
Posts: 502
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

e come si fa ad usare questi segnali di latch? ci si può riuscire solo con la funzione Shiftout? Comunque grazie, non sapevo che 0b indicasse la forma binaria. Ci sono altri codici?
P.s. Lo sketch l'ho trovato su internet ma ci ho fatto amche qualcosa io. Non sei l'unico a cui non piace la "pappa pronta" smiley-mr-green
« Last Edit: December 17, 2012, 04:42:36 pm by SUBSEA » Logged

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

Ti rimetto il link che spiega come usare gli S/R:
http://www.arduino.cc/en/Tutorial/ShiftOut
Lì trovi come si usa il latch.
Logged


Pages: 1 2 3 [4]   Go Up
Jump to: