Pagina 1 di 1

Led a scorrimento

MessaggioInviato: 8 giu 2019, 11:12
da elfo
Foto Utenteabusivo ha scritto
abusivo ha scritto:penso come si potrebbe realizzare un circuito simile senza l'ausilio di Arduino e diavolerie varie.
Un generatore di rampa e poi?

e poi un LM3915 o LM3914 (in bar mode)

https://pdf1.alldatasheet.com/datasheet-pdf/view/8899/NSC/LM3915.html
https://www.ti.com/lit/ds/symlink/lm3914.pdf
abusivo ha scritto:Oppure?

Quello che segue e' uno registro a scorrimento (shift register) "discreto" (realizzato con flip-flop tipo D).
Puo' essere utilizzato in sostituzione uno shift register integrato (es SN74164)

https://www.ti.com/lit/ds/symlink/sn54ls164-sp.pdf

Lo schema e' puramente di principio - manca ad es. (ma non solo)

- la definizione dello stato iniziale delle uscite (lo stato di quando i LED iniziano a lampeggiare)
- non e' detto che le uscite dei flip -flop abbiano la capacita' di pilotare direttamente I LED)

Il numero dei flip-flop (e dei LED) puo' essere espanso a piacere (ed anche l'SN74164 puo' essere messo in "cascata")

Re: Led a scorrimento

MessaggioInviato: 8 giu 2019, 11:41
da abusivo
elfo ha scritto:Foto Utenteabusivo ha scritto...

Eccomi!
elfo ha scritto:...e poi un LM3915 o LM3914 (in bar mode)...

L'avevo pensato anch'io ma mi è sorto un dubbio:
in questo caso è meglio il driver logaritmico o lineare?
Io propendo per il secondo senza neanche menzionare LM 3916.
elfo ha scritto:...Quello che segue e' uno registro a scorrimento...

In prima analisi l'idea era proprio questa.
A livello puramente didattico avrò qualcosa da pensare in questo afoso week end capitolino ...

Re: Led a scorrimento

MessaggioInviato: 8 giu 2019, 12:12
da impedance
Volendolo fare con arduino impiegando soltanto la funzione "switch case". Ho pensato al caso in cui ci fossero 4 led e si volessero azionare in diverse modalità.
In base al valore dato alla costante "sequenza" :
0: accensione a partire dal led A in sequenza con tempo di ritardo di 0.5s. L'accensione del successivo determina lo spegnimento del precedente
1: accensione a partire dal led D n sequenza con tempo di ritardo di 0.5s. L'accensione del successivo determina lo spegnimento del precedente
2:accensione a partire dal led A in sequenza con tempo di ritardo di 0.5s. L'accensione del successivo non determina lo spegnimento del precedente
3:accensione a partire dal led A in sequenza con tempo di ritardo di 0.5s. L'accensione del successivo non determina lo spegnimento del precedente.
Codice: Seleziona tutto
//costanti
const int sequenza = 0; //0 = da dx vs sx, 1 = da sx verso dx - l'accensione del successivo coincide con lo spegnimento del precedente   
// 2 = da sx verso dx, 3 = da dx verso sx - l'accensione del successivo mantiene acceso il precedente
const int ledA =  13;
const int ledB =  12;
const int ledC =  11;
const int ledD =  10;
const int tempo = 500;


void setup() {
  // put your setup code here, to run once:
  pinMode(ledA, OUTPUT);
  pinMode(ledB, OUTPUT);
  pinMode(ledC, OUTPUT);
  pinMode(ledD, OUTPUT);
  }

void loop() {
  // put your main code here, to run repeatedly:
switch (sequenza) {
  case 0:
    digitalWrite(ledA, HIGH);
    digitalWrite(ledD, LOW);
    delay(tempo);
    digitalWrite(ledA, LOW);
    digitalWrite(ledB, HIGH);
    delay(tempo);
    digitalWrite(ledB, LOW);
    digitalWrite(ledC, HIGH);
    delay(tempo);
    digitalWrite(ledC, LOW);
    digitalWrite(ledD, HIGH);
    delay(tempo);
    break;
  case 1:
    digitalWrite(ledD, HIGH);
    digitalWrite(ledA, LOW);
    delay(tempo);
    digitalWrite(ledD, LOW);
    digitalWrite(ledC, HIGH);
    delay(tempo);
    digitalWrite(ledC, LOW);
    digitalWrite(ledB, HIGH);
    delay(tempo);
    digitalWrite(ledB, LOW);
    digitalWrite(ledA, HIGH);
    delay(tempo);
    break;

   case 2:
    digitalWrite(ledA, HIGH);   
    delay(tempo);   
    digitalWrite(ledB, HIGH);
    delay(tempo);   
    digitalWrite(ledC, HIGH);
    delay(tempo);   
    digitalWrite(ledD, HIGH);
    delay(tempo);
    digitalWrite(ledA, LOW);
    digitalWrite(ledB, LOW);
    digitalWrite(ledC, LOW);
    digitalWrite(ledD, LOW);
    delay(50);
    break;
   
   case 3:
    digitalWrite(ledD, HIGH);   
    delay(tempo);   
    digitalWrite(ledC, HIGH);
    delay(tempo);   
    digitalWrite(ledB, HIGH);
    delay(tempo);   
    digitalWrite(ledA, HIGH);
    delay(tempo);
    digitalWrite(ledA, LOW);
    digitalWrite(ledB, LOW);
    digitalWrite(ledC, LOW);
    digitalWrite(ledD, LOW);
    delay(50);
    break;
}
}

Re: Led a scorrimento

MessaggioInviato: 8 giu 2019, 14:50
da edgar
In fiera ho visto strip già pronte da 20/30 centimetri. Immagino esistano anche di altre misure.

Re: Led a scorrimento

MessaggioInviato: 8 giu 2019, 15:25
da abusivo
edgar ha scritto:In fiera ho visto strip già pronte da 20/30 centimetri...

Con tutti i led singoli?

Re: Led a scorrimento

MessaggioInviato: 8 giu 2019, 18:18
da edgar
Li ho visti tempo fa, ora che ci penso mi sembra fossero una barra che si riempie, tipo vu meter

Re: Led a scorrimento

MessaggioInviato: 8 giu 2019, 18:25
da edgar
abusivo ha scritto:A livello puramente didattico avrò qualcosa da pensare in questo afoso week end capitolino ...

Per il led singolo in passato è stato un florilegio di CD4017 + Ne555