Pages: [1]   Go Down
Author Topic: far lampeggiare display 7 segmenti in multiplex  (Read 771 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

che cosa si potrebbe fare per far lampeggiare metà dei display a 7 segmenti  che sono gia pilotati IN MULTIPLEX  in determinate condizioni
es:  se (if) temperatura <30 gradi  2 display (quelli che segnano la temperatura ) lampeggiano,  gli altri invece restano accesi fissi (altri 2 display)


Logged


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

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

Puoi semplicemente aggiungere un check con millis all'interno della tua routine di visualizzazione in multiplex dove metti ad esempio un controllo per cui ogni 500 ms inverti lo stato di una variabile. Se la variabile è false o 0, il display è spento, se è true o 1 visualizzi (in mutiplex) i dati
Logged


Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Puoi semplicemente aggiungere un check con millis all'interno della tua routine di visualizzazione in multiplex dove metti ad esempio un controllo per cui ogni 500 ms inverti lo stato di una variabile. Se la variabile è false o 0, il display è spento, se è true o 1 visualizzi (in mutiplex) i dati

quindi è come avevo pensato, millis è l'unica ( o c'è altro? )   delay non se ne parla neppure
se no blinka tutto  smiley-small
Logged


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

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

Con delay non puoi perché ti blocca il codice per cui durante il delay non puoi multiplexare il display.

Potresti provare ad usare il leOS   smiley-yell
Crei 2 task. Il primo task lo imposti per il multiplexing del display, così che visualizzi le info.
Se si attiva l'allarme, crei un secondo task che mette in pausa e riattiva il primo ad intervalli cadenzati. Terminata la situazione di allarme, cancelli il secondo task e lasci andare il primo  smiley-wink

Non so se funziona né se hai altre librerie nel tuo codice che potrebbero usare il timer 2.
Logged


Offline Offline
God Member
*****
Karma: 8
Posts: 691
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Con delay non puoi perché ti blocca il codice per cui durante il delay non puoi multiplexare il display.

Potresti provare ad usare il leOS   smiley-yell
Crei 2 task. Il primo task lo imposti per il multiplexing del display, così che visualizzi le info.
Se si attiva l'allarme, crei un secondo task che mette in pausa e riattiva il primo ad intervalli cadenzati. Terminata la situazione di allarme, cancelli il secondo task e lasci andare il primo  smiley-wink

Non so se funziona né se hai altre librerie nel tuo codice che potrebbero usare il timer 2.

allora:  il miniprogetto deve fare queste cose  2 coppie di cifre   una misura la pressione 0-2,5 bar una misura la temperatura da -9  a 99 gradi,
piu 2 led che segnalano 2 elettrovalvole a 12 volt, se sono  aperte

se le 2 elettrovalvole sono entrambe aperte e la temperatura e sotto trenta gradi  la temperatura deve lampeggiare

se la pressione è a 0',9 o meno    la pressione deve lapeggiare
se la pressione è a piu di 2 bar la presiione deve lampeggiare
Logged


Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

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

Ci sono tanti modi per farlo.
Come detto, il più semplice è usare millis e alternare la visualizzazione del display per simulare il lampeggio. L'ho già fatto, è semplicissimo. Si tratta solo di mettere nel codice del multiplex un check su una variabile di controllo: se è 1/true, fai vedere i dati, se è 0/false no.
Nel loop principale metti un check su millis. Dai l'intervallo che piace a te e poi alterni la variabile suddetta. Fine.

Ovviamente il check su millis è attivo se è attiva la condizione di allarme. Una cosa del genere, in blocchi:

1) controllo stato
2) lo stato è a posto? Sì, variabile su NoLampeggio e salto a 6)
3) No, check su millis.
4) E' passato l'intervallo preposto?
5) Sì, alterno la variabile tra NoLampeggio e SìLampeggio
6) chiamo il multiplex
7) torno a 1)
Logged


Pages: [1]   Go Up
Jump to: