< Segue da Arduino N° 37 |
Proviamo ad usare le uscite analogiche di Arduino.
In effetti la tensione di uscita non è proprio analogica ma a gradinata, sfruttando la tecnica PWM cioè modulando la larghezza degli impulsi. Si ottiene una tensione di uscita che può essere variata, in qualche modo, con il comando analogWrite().
Il programma qui presentato varia, a due livelli, la luminosità di un LED. I livelli di uscita possono essere 256 (da 0 a 255). In questo caso, sono stati usati i livelli 128 e 255, corrispondenti a circa 5 volt e 2,5 volt di tensione di uscita.
La resistenza in serie al LED può essere da 470 Ohm, il ché limita la corrente massima a circa 10mA.
Il programma può essere anche realizzato come "routine" da richiamare all'interno di un programma principale, ad esempio come spia lampeggiante a due livelli. In questo caso è opportuno modificare la routine facendo uso della funzione "millis", per evitare il blocco del programma principale.
/* ------------------ Inizio programma -----------------------------------------------------------
* utilizzo della funzione analogWrite() per variare, a step, la luminosità di un LED.
* Achille De Santis - V2 del 14-11-2019
*/
// ------------------ I/O --------------------------------------------------------
#define LED 11 // LED collegato al pin digitale 11 (PWM)
// valori di uscita: 255/128
// -------------------------------------------------------------------------------
void intestazione()
{ Serial.println(" ------------------------------------------------------ ");
Serial.println(" - Autore: Tecnatron - ing. Achille De Santis - ");
Serial.println(" - Sketch: varia la luminosità di un LED - V.2- ");
Serial.println(" - il piedino di uscita deve essere un PWM - ");
Serial.println(" ------------------------------------------------------- ");
}
void accendi(int L, int V) { analogWrite(L, V); delay(500); } // accende il LED a tensione variabile.
void setup()
{
pinMode(LED, OUTPUT); // imposta il pin come output
Serial.begin(9600); // setto la velocità di comunicazione
intestazione(); // intestazione, inviata alla seriale
}
void loop()
{
accendi(LED, 255); // accende il LED a tensione massima.
accendi(LED, 128); // accende il LED a tensione metà.
}
// --------------- Fine programma ---------------------------------------------
Simulazione: Lampeggiatore modulato
Argomenti correlati:
> Arduino N° 39
Simulazione: Lampeggiatore modulato
Argomenti correlati:
> Arduino N° 39
Nessun commento:
Posta un commento