]> git.piffa.net Git - sketchbook_andrea/blob - multitasking/blink_0_soluzione/blink_0_soluzione.ino
Clean up multitasking, bottoni con pooling e interrupts
[sketchbook_andrea] / multitasking / blink_0_soluzione / blink_0_soluzione.ino
1 /*
2   Blink due LED - Soluzione
3  
4  Aggiungere un secondo LED e farlo brillare ogni 500ms
5  mentre il primo brilla ogni 1000ms
6  
7  Massimo comun denominatore 1000 MCD 500 = 500ms
8  Durata Periodo = 500ms
9  
10  Schema: https://lab.piffa.net/schemi/millis_bb.png
11  
12  Stati: 
13  
14  a  |  b    Changes
15  ========   =========
16  1  |  1    x   |   x
17  1  |  0        |   x
18  0  |  1    x   |   x
19  0  |  0        |   x
20  
21  
22  */
23
24 // Pin 13 has an LED connected on most Arduino boards.
25 // give it a name:
26 const int ledA = 13; //Primo LED
27 const int ledB = 12; //Secondo LED, con resistenza
28
29 // the setup routine runs once when you press reset:
30 void setup() {                
31   // initialize the digital pin as an output.
32   pinMode(ledA, OUTPUT);    
33   pinMode(ledB, OUTPUT);  
34 }
35
36 // the loop routine runs over and over again forever:
37 void loop() {
38   // Primo periodo
39   digitalWrite(ledA, HIGH);   // turn the LED on (HIGH is the voltage level)
40   digitalWrite(ledB, HIGH);
41   delay(500);               // Minimo comun denominatore del periodo
42
43   // Secondo periodo
44   //digitalWrite(ledA, HIGH); // ledA non cambia
45   digitalWrite(ledB, LOW);
46   delay(500);
47
48   // Terzo periodo
49   digitalWrite(ledA, LOW);
50   digitalWrite(ledB, HIGH);
51   delay(500);
52
53   // Quarto periodo
54   //digitalWrite(ledA, LOW);  
55   digitalWrite(ledB, LOW);
56   delay(500);
57 }
58
59 /* Domande
60  1. Altro scenario: fare brillare un LED ogni 300ms mentre il secondo brilla ogni 400m
61  2. ...valutare come aggiungere un terzo LED, gestire altri intevalli.
62  */