Si riporta lo schema per la creazione di un segnale PWM ed ottenere la variazione di luminosità di un led o la variazione di velocità
di rotazione di un motore in continua.
L'onda PWM è un'onda rettangolare che varia il tempo che rimane allo stato alto rispetto allo stato basso, questo rapporto si chiama Duty Cycle
e si calcola : DC = tempo che rimane alto/Periodo dell'onda.
Cliccando di seguito si commentano le parti più importanti di codice del programma realizzato con Arduino IDE:
uscitaPWM=uscitaPWM+delta;Si incrementa (se delta è positivo) o decrementa (se delta è negativo) il parametro del duty cycle dell'onda
analogWrite(9,uscitaPWM);Si genera un'onda PWM al pin 9 con Duty Cycle dato dal valore della variabile uscitaPWM
if(uscitaPWM==0 || uscitaPWM==100){delta= -delta;.... se il valore del duty cycle raggiunge i valori 0 oppure 100 allora si imposta
la variabile per decrementare o incrementare il PWM
Cliccando l'immagine si visualizza o scarica il file del codice scritto con l'IDE diArduino.
ARDUINO
PWM con Arduino e Processing 1/2
Si modifica il primo programma per la creazione di un'onda PWM per permettere la comunicazione tra Arduino e Processing
che servirà a creare successivamente l'interfaccia grafica di seguito riportata:
Cliccando di seguito si commentano le parti più importanti di codice del programma realizzato con Arduino IDE:
Serial.println((String)tensione);Si invia attraverso l'interfaccia seriale al PC il valore analogico letto
.
Cliccando l'immagine si visualizza o scarica il file del codice scritto con l'IDE diArduino.
ARDUINO--->PROCESSING
PWM con Arduino e Processing 2/2
Di seguito si commentano le parti più importanti di codice del programma realizzato con Processing:
line(xAtt,height-yPrec,xAtt,height - datoAnalogico);si traccia una linea orizzontale che parte dal punto di coordinate x= xAtt e y=height-yPrec
e finisce al punto di coordinate x=xAtt e y=height - datoAnalogico, si sottrae per l'altezza height perchè l'origine degli assi
si trova in alto a sinistra
text(nf(datoAnalogico,0,2),xAtt,height-yPrec)... si visualizza sopra la linea il valore analogico letto
if(xAtt>=width){ xAtt=0;se si supera la larghezza del grafico si ritorna all'inizio della finestra
nf(datoAnalogico,0,2)....si indica due numeri dopo la virgola
Cliccando l'immagine si visualizza il codice realizzato con l'IDE di PROCESSING
per la ricezione dei dati provvenienti da Arduino.