Vai al contenuto
Inviato

Arduino UNO dispone di ben 6 pin PWM, una modulazione digitale che permette di ottenere una tensione media variabile, questo grazie alla variazione del tempo di un impulso, per capire meglio guardate la figura qui in basso, presa da wikipedia

http://dl.dropbox.com/u/27772338/688px-PWM%2C_3-level_svg.png

V è l'impuso emesso dal pin e B è la tensione media che si ottiene nell tempo sul carico, in questo caso un motore.

Ora andiamo a vedere come possiamo utilizzare questa modulazione per poter variale l'illuminazione di un led con arduino.

Arduino_dimmer_ledv1.jpg

da notare che come l'esperimento precedente ho messo tra il catodo del LED e la massa una resistenza (circa 10kOhm), questo per regolare la corrente.

Ora inizializziamo il piedino 9:

void setup() {
 pinMode(9, OUTPUT);
}

Fin qui non cambia nulla, ora invece basta giocare sul valore di da assegnare al comando di uscita, usando un nuovo comando

analogWrite(pin, valore);

in questo comando vanno assegnati 2 valori il primo indica il pin dove abbiamo collegato il nostro led e il valore del ciclo pwm compreso tra 0 (sempre spento) e 255 (sempre acceso).

quindi il nostro loop diventa:

void loop() {
 for(int valore = 0; valore <= 255; valore++) {
   analogWrite(9, valore);
   delay(50);
 }
 delay(50);
 for(int valore = 255; valore >= 0; valore--) {
   analogWrite(9, valore);
   delay(50);
 }
 delay(50);
}

ora grazie ai due clicli "for" faccio aumentare il valore della frequenza del segnale pwm, nel primo caso, e nel secondo lo faccio decrescere, creando un effetto di accensione e spegnimento lento del led.

Schetch completo:

void setup() {
 pinMode(9, OUTPUT);
}

void loop() {
 for(valore = 0; valore <= 255; valore++) {
   analogWrite(9, valore);
   delay(50);
 }
 delay(50);
 for(int valore = 255; valore >= 0; valore--) {
   analogWrite(9, valore);
   delay(50);
 }
 delay(50);
}

Schema elettrico:

Arduino_dimmer_ledv2.jpg

Modificato da RyujiAndy

Featured Replies

Inviato

Ciao

Anche quì ho notato la mancanza della variabile valore nel ciclo for. io l'ho corretta inserendo:

int valore; prima del setup. In questa maniera non sono costretto a specificarlo a ogni ciclo for.

Comunque mi stò divertendo con Arduino.

Continua così.

Ciao

Inviato
  • Autore
Chissa dove ho la testa.....mmmh
  • 3 anni dopo...
Inviato

Come dimmare un LED con Ar

 

Ciao a tutti ragazzi,non ho mai avuto esperienze con linux, solo Windows ma ho bisogno di provare lebbrezza di smanettare e linux и il sistema che fa per me. Ma che distro devo installare? E soprattutto come cimentarmi in questo? Se mi potete linkare qualche guida mi farebbe molto piacere. Grazie

Crea un account o accedi per lasciare un commento