]> git.piffa.net Git - sketchbook_andrea/blob - multitasking/millis/pwm_millis/pwm_millis.ino
interrupts
[sketchbook_andrea] / multitasking / millis / pwm_millis / pwm_millis.ino
1 /*
2    Fade
3
4    PWM per un LED: aumentare progressivamente la luminosita'.
5    Utilizza la funzione millis() invece che un delay()
6    in modo da non blocare il processore.
7
8    La durata del ciclo e' pero' molto approssimativa in multipli di 256ms
9    quindi con errore di +-128ms, inoltre si possono accumulare ulteriori
10    ritardi se la funzione non viene eseguita regolarmente ogni ms.
11    
12  */
13
14
15 // the setup routine runs once when you press reset:
16 void setup()  {
17   pinMode(9, OUTPUT); // Il PIN nove va dichiarato come un OUTPUT
18 }
19
20 void loop()  {
21
22 pwmUp(9, 3000);
23
24 }
25
26 // Funzioni:
27
28 void pwmUp(byte led, int speed) {
29   // Aumenta progressivamente la luminosita' usanndo millis()
30   // quindi senza bloccare il processore
31
32   static byte brightness = 0;  // Valore iniziale per il PWM del LED
33   static long previousMillis = 0;
34   
35   analogWrite(led, brightness);  // La funziona analogWrite utilizza il PWM
36   // a 8 bit integrato nel MCU: simula un serie di valori intermedi
37   // nell'intervallo discreto con minimo 0 (spento) e  massimo 255 (acceso).
38
39   if ((millis() - previousMillis) > speed / 256) {
40     brightness++ ; // Incrementiamo la luminosita'
41     previousMillis = millis();
42   };
43 }