]> git.piffa.net Git - sketchbook_andrea/blob - multitasking/BlinkWithoutDelay_5_cleanup/BlinkWithoutDelay_5_cleanup.ino
b0ba86efe7a817dc204f288aa052eedc44d62f2b
[sketchbook_andrea] / multitasking / BlinkWithoutDelay_5_cleanup / BlinkWithoutDelay_5_cleanup.ino
1 /* Blink without Delay - Pulizia
2
3 Semplificato il ciclo condizionale, la seconda funzione non necessita
4 di una variabile di stato per tracciare il LED.
5
6  */
7
8 // constants won't change. Used here to 
9 // set pin numbers:
10
11 // First LED
12 const int ledA =  13;      // the number of the LED pin
13 // Variables will change:
14 int ledStateA = LOW;             // ledState used to set the LED
15 long previousMillisA = 0;        // will store last time LED was updated
16
17 // Second LED data
18 const int ledB = 12; //Secondo LED
19 // int ledStateB = LOW;             // Possiamo leggere lo stato del registro del LED
20                                     // con digitalRead()
21 unsigned long previousMillisB = 0;  // millis() ritorna sempre un unsigned long
22
23 void setup() {
24   // set the digital pin as output:
25   pinMode(ledA, OUTPUT);      
26   pinMode(ledB, OUTPUT);  
27 }
28
29 void loop()
30 {
31   lightLedA(1000);
32   lightLedB(500);
33 }
34
35 ////////////////
36 // Funzioni
37
38 void lightLedA (int interval) {
39   // Illumina il ledA secondo un intervallo passato come argomento
40
41   if (millis() >= previousMillisA + interval) {
42     // save the last time you blinked the LED 
43     previousMillisA += interval;
44
45     // if the LED is off turn it on and vice-versa:
46     ledStateA = !ledStateA ; // Inverti il LED
47   }
48   digitalWrite(ledA, ledStateA);
49 }
50
51 void lightLedB (int interval) {
52   // Illumina il ledB secondo un intervallo passato come argomento
53
54   if (millis() - previousMillisB >= interval) {   
55     previousMillisB += interval;
56   digitalWrite(ledB, !digitalRead(ledB));
57   // Leggiamo direttamente il registro di ledB e scriviamo il suo opposto,
58   // questo ci permette di non dover avere una variabile per tracciare lo stato.
59   }
60 }
61 /* Domande:
62  1. E' possibile avere una sola funzione che permetta di gestire 
63     qualunque LED io voglia aggiungere?
64     
65 /* Approfondimenti
66  - integrazione tra funzioni e dati: programmazione a oggetti
67  - Uso di pointers per modificare dati esterni allo scope della funzione, static
68  - Uso di forme di dati strutturate (array, struct) per scambiare dati tra funzioni e programma
69  */
70
71
72
73
74
75
76
77
78
79
80