dbe0d05c80be350280a4e6513204776775f7865c
[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
22 void setup()
23 {
24   for (byte i = 0; i < 4; i++) {
25     pinMode(pin[i], OUTPUT);
26   }
27 }
28
29
30 void loop()
31 {
32   analogWrite(pin[0], led.red);
33   analogWrite(pin[1], led.green);
34   analogWrite(pin[2], led.blue);
35 }
36
37 /* Domande:
38  1. Potrei mettere i numeri dei PIN dentro lo stesso struct?
39  2. Quale differenza funzionale c'e' tra i numeri dei PIN e i colori?
40  2.1 Quando devo settare i pin e quante volte?
41  2.2 Quando imposto i colori e quanto spesso?
42
43  3. Sarebbe piu' elegante scrivere una funzione per gestire il setup dei PIN
44  e impostare i colori?
45  3.1 Servira' una o piu' funzioni?
46  4. Esiste un costrutto che mi permetta di legare le differenti proprieta'
47  del LED RGB e contemporaneamente raggruppare le funzioni che tipicamente uso con questo?
48  */
49
50
51 /* Risposte:
52  *  1.
53
54 struct ledRGB {
55     byte rPin ;     // PINS
56     byte gPin;
57     byte bPin;
58     byte    blue;   // Colors
59     byte    green;
60     byte    red;
61 };
62
63 ledRGB led {0,255,255,9,10,11};
64    
65    
66
67 void setup()
68 {
69   pinMode(led.Pin, OUTPUT);
70   pinMode(led.Pin, OUTPUT);
71   pinMode(led.Pin, OUTPUT);
72 }
73
74 void loop()
75 {
76   analogWrite(led.rPin,led.red );
77   analogWrite(led.gPin,led.green);
78   analogWrite(led.bPin,led.blue);
79 }
80 */