]> git.piffa.net Git - sketchbook_andrea/blob - multitasking/BlinkWithoutDelay_7_struct/BlinkWithoutDelay_7_struct.ino
8b555279498cbca4d3b33fef1d0f6ebcb5ad9992
[sketchbook_andrea] / multitasking / BlinkWithoutDelay_7_struct / BlinkWithoutDelay_7_struct.ino
1 /* Blink without Delay
2  Soluzione
3  
4  Introdotto un argomento per la funzione che nodifica l'intervallo di lampeggio 
5  */
6
7 struct blinkLed {
8   // Lampeggia un LED utilizzando millis()
9   // Variabili
10   int ledPin ;           // il numero del LED pin
11   int ledState ;         // stato attuale del LED
12   long interval ;        // milliseconds di intervallo nel lampeggiare
13   long previousMillis ;  //precedente cambio di stato  
14
15 ;
16
17 // Instanziamo i due led dalla classe 
18 blinkLed ledA = {
19   13 , LOW , 1000, 0 };
20 blinkLed ledB = {
21   12, LOW, 500, 0};
22
23 void setup() {
24   pinMode(ledA.ledPin, OUTPUT); // Domanda: integrare l'impostazione del LED nel codice della funzione.
25   pinMode(ledB.ledPin, OUTPUT);
26 }
27
28 void loop()
29 {
30  ledA = lightLed(ledA ); // Aggiorna lo stato del LED in base all'esecuzione della funzione
31  ledB = lightLed(ledB );
32 }
33
34 ////////////////
35 // Funzioni
36
37 struct blinkLed lightLed(struct blinkLed temp) { // dataType tipo_di_struct nome_funzione(argomenti)
38   // Illumina il ledA secondo un intervallo passato come argomento
39
40   if (millis() - temp.previousMillis >= temp.interval) { // gli elementi dello struct sono accessibili tramite l'operatore [punto]
41     // save the last time you blinked the LED 
42     temp.previousMillis += temp.interval ;
43
44     // if the LED is off turn it on and vice-versa:
45     temp.ledState = !temp.ledState ; // Inverti il LED
46   }
47   digitalWrite(temp.ledPin, temp.ledState);
48   return(temp); // copy by value
49 }
50
51
52