Loop e data type strutturati
[sketchbook_andrea] / RGB_LED / rgb_5_struct / rgb_5_struct.ino
1 /*
2     RGB struct LED
3
4  RGB LED: mpostare i colori per un LED RGB
5  common anode utilizzando uno struct
6
7  Schema: http://lab.piffa.net/schemi/rgb.jpg
8  */
9
10 byte pin[3]   = {11, 10, 9};   // 2v a 20ma: che resistenza dovro usare?
11
12 struct color {
13   byte red ;
14   byte blue;
15   byte green;
16
17 } ;
18
19 color led;
20
21 void setup()
22 {
23   for (byte i = 0; i < 4; i++) {
24     pinMode(pin[i], OUTPUT);
25   }
26 }
27
28 void loop()
29 {
30   analogWrite(pin[0], led.red);
31   analogWrite(pin[1], led.green);
32   analogWrite(pin[2], led.blue);
33 }
34
35 /* Domande:
36  1. Potrei mettere i numeri dei PIN dentro lo stesso struct?
37  2. Quale differenza funzionale c'e' tra i numeri dei PIN e i colori?
38  2.1 Quando devo settare i pin e quante volte?
39  2.2 Quando imposto i colori e quanto spesso?
40
41  3. Sarebbe piu' elegante scrivere una funzione per gestire il setup dei PIN
42  e impostare i colori?
43  3.1 Servira' una o piu' funzioni?
44  4. Esiste un costrutto che mi permetta di legare le differenti proprieta'
45  del LED RGB e contemporaneamente raggruppare le funzioni che tipicamente uso con questo?
46  */
47
48
49 /* Risposte:
50  *  1.
51
52 struct ledRGB {
53     byte rPin ;     // PINS
54     byte gPin;
55     byte bPin;
56     byte    blue;   // Colors
57     byte    green;
58     byte    red;
59 };
60
61 ledRGB led {9,10,11,0,255,255};
62    
63 void setup()
64 {
65   pinMode(led.rPin, OUTPUT);
66   pinMode(led.gPin, OUTPUT);
67   pinMode(led.bPin, OUTPUT);
68 }
69
70 void loop()
71 {
72   analogWrite(led.rPin,led.red );
73   analogWrite(led.gPin,led.green);
74   analogWrite(led.bPin,led.blue);
75 }
76 */