Fader - Dissolvenza

Questo esercizio controlla l’oggetto inserito nella DashBoard, che ha la forma di un indicatore graduato con una tacca rossa che si sposta su e giù, con la velocità di spostamento controllata da un potenziometro Slider.

La modalità analogica del PWM, da zero a +3,3/5 Volt, simula la luminosità di una barra a led che si accende progressivamente per poi spegnersi lentamente; l’incremento è controllato dalla variabile “ADC_in” , di tipo Byte, suddivsa in 256 spassi (step) .

Un programma di questo tipo potrebbe essere utilizzato per controllare progressivamente l’ingresso di un VCA (amplificatore controllato in tensione), mentre l’uscita digitale PWM potrebbe servire per controllare la luminosità di una striscia a led o la velocità di un motore.

Definisco le variabili e i componenti per il progetto “Dissolvenza”

PWM fader 1
  • la variabile “dissolvenza” controlla il  “Duty Cycle” del segnale PWM.
  • La variabile ADC_in, contiene il valore “GetByte” associato con l’ingresso analogico A0.

barra di visualizzazione

dal menu “Outputs” inserisco il PWM

dal menu “Inputs” inserisco lo slider

il segnale PWM è abilitato sul pin 6 della porta D

Analogue: seleziona la modalità di visualizzazione del PWM

  • il potenziometro(slider) è collegato all’ingresso analogico A0.
  • La barra di visualizzazione vericale analogica è controllata dal “Duty Cycle”del segnale PWM.

il programma “Dissolvenza” , inizia con il “Component Macro” che abilita l’uscita PWM sul pin6 della porta D.

PWM fader 2

PWM Enable

Nel ciclo principale, inserisco il sotto ciclo Fading + 1, che con la funzione “calcolo”:

Fading = Fading + 1

Aumenta progressivamente la tacca rossa dell’indicatore analogico del PWM per mezz o di “SetDutyCycle“ controllato dalla variabile Fading.

PWM fader 3

Controllo della velocità di dissolvenza

PWM fader 4
PWM fader getbyte

il programma esegue la dissolvenza alla velocità prefissata dalla funzione Delay impostata a 10 millisecondi.

Per cambiare la velocità mentre il programma è in esecuzione, utilizzerò la variabile “ADC_in”  in sostituzione del valore  “10” millisecondi nella funzione Delay.

Controllo dello slider

ADC_in

Inserisco nel sotto ciclo Ramp up, il “Component Macro” per controllare lo slider con l’istruzione “GetByte” e sostituisco il valore 10 ms di Delay con la variabile ADC_in.

Spostando il cursore dello slider verso l’alto, il valore aumenterà fino al massimo di 255, che è la velocità minima della dissolvenza.

PWM fader avanti e indietro

Dissolvenza avanti - indietro

Per ottenere l’effetto dissolvenza di tipo giorno-notte, è necessario introdurre nel ciclo principale un altro sotto ciclo che fa tornare a zero la tacca rossa.

Per differenziare i due sotto cicli, chiamerò “Ramp up” il sotto programma che fa salire la tacca rossa e “Ramp down” quello che la fa scendere.

  • Ramp up : Fading < 255   La variabile Fading parte da zero fino a raggiungere 255
  • Ramp down: Fading > 0  La variabile Fading parte da 255 fino a raggiungere lo zero

Il programma

Inizia abilitando il PWM: PWM Enable

Il ciclo principale inizia acquisendo la posizione del cursore dello slider collegato all’ingresso analogico A0, converte il segnale con  ADC_in , inserisce il valore in GetByte e lo utilizza in Delay impostando la velocità di dissolvenza

Il sotto ciclo Ramp up, è eseguito finché raggiunge il valore 255  - While fading > 255

La funzione Calcolo: Fading + 1 , incrementa il DutyCycle  da zero a con 255

Raggiunto il valore Fading = 255, il programma prosegue con l’esecuzione del sotto ciclo Ramp Down che con Fading -1, decrementa fino a zero – While Fading > 0

Il programma inizia un nuovo ciclo leggendo la posizione dello slider, se è variata rispetto la posizione precedente,, anche la velocità di esecuzione della dissolvenza varierà di conseguenza.

Il controllo dello slider è spostato dall’interno del sotto ciclo “Ramp up”, all’inizio del ciclo principale perché è sufficiente un solo controllo

C Code

Riccardo Monti