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”
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 programma “Dissolvenza” , inizia con il “Component Macro” che abilita l’uscita PWM sul pin6 della porta D.
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.
Controllo della velocità di dissolvenza
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.
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.
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