]> git.piffa.net Git - sketchbook_andrea/blob - oggi/RGB_LED/rgb_7_obj/rgb_7_obj.ino
multi cleanup
[sketchbook_andrea] / oggi / RGB_LED / rgb_7_obj / rgb_7_obj.ino
1 /*
2     RGB Object
3
4     Gestione di un LED RGB tramite programmazione a oggetti
5
6  Schema: http://lab.piffa.net/schemi/rgb.jpg
7  */
8
9 class RGBLed {
10   // Classe rappresentativa di un LED RGB
11   
12     // Private properties, le proprieta' sono private per default
13     byte redPin ;
14     byte greenPin ;
15     byte bluePin ;
16
17   public:
18     // Public properties
19     byte redValue ;
20     byte greenValue ;
21     byte blueValue ;
22
23     // Constructor: come viene instanziato un oggetto facente parte della classe
24     RGBLed(byte pinR, byte pinG, byte pinB)
25     {
26       // Carichiamo i valori dei PIN dentro alle proprieta'
27       redPin    = pinR ;
28       greenPin  = pinG ;
29       bluePin   = pinB ;
30
31       // Equvalente del Setup() per inizializzare i PIN
32       pinMode(redPin, OUTPUT);
33       pinMode(greenPin, OUTPUT);
34       pinMode(greenPin, OUTPUT);
35     }
36
37     void Arrossa () {
38       // Metodo = funzione dell'oggetto
39       // Imposta il colore di un LED RGB a rosso
40
41       analogWrite(redPin,   0);
42       analogWrite(greenPin, 255);
43       analogWrite(bluePin,  255);
44     }
45
46     void SetColor (byte r, byte g, byte b) {
47       // Imposta il colore di un LED RGB
48
49       analogWrite(redPin,   r);
50       analogWrite(greenPin, g);
51       analogWrite(bluePin,  b);
52     }
53 };
54
55 // Instanziamo un LED
56 RGBLed led(11, 10, 9);
57 /* L'oggetto viene istanziato qui e non nella funzione di setup()
58     perche' altrimenti la sua esistenza sarebbe legata solo
59     al contesto (scope) del setup(), non sarebbe disponibile nel loop()
60  */
61
62 void setup()  {
63   // I PIN mode vengono settati dal constructor
64 }
65
66 void loop() {
67   led.Arrossa();
68   delay(1000);
69   led.SetColor(255, 0, 255) ; // Mettiamo il LED in Green
70   delay(1000);
71
72 }
73
74 /* Domande
75  1. Provate ad accedere (serial print oppure modificare) le proprieta private e pubbliche.
76
77  */
78