]> git.piffa.net Git - sketchbook_andrea/blob - RGB_LED/rgb_6_obj/rgb_6_obj.ino
edit
[sketchbook_andrea] / RGB_LED / rgb_6_obj / rgb_6_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     byte redPin ;
13     byte greenPin ;
14     byte bluePin ;
15     byte redValue ;
16     byte greenValue ;
17     byte blueValue ;
18
19     // Constructor: come viene instanziato un oggetto facente parte della classe
20   public:
21     RGBLed(byte pinR, byte pinG, byte pinB)
22     {
23       // Carichiamo i valori dei PIN dentro alle proprieta'
24       redPin    = pinR ;
25       greenPin  = pinG ;
26       bluePin   = pinB ;
27
28       // Equvalente del Setup() per inizializzare i PIN
29       pinMode(redPin, OUTPUT);
30       pinMode(greenPin, OUTPUT);
31       pinMode(greenPin, OUTPUT);
32     }
33
34     void Arrossa () {
35       // Metodo = funzione dell'oggetto
36       // Imposta il colore di un LED RGB a rosso
37
38       analogWrite(redPin,   0);
39       analogWrite(greenPin, 255);
40       analogWrite(bluePin,  255);
41     }
42
43     void SetColor (byte r, byte g, byte b) {
44       // Imposta il colore di un LED RGB
45
46       analogWrite(redPin,   r);
47       analogWrite(greenPin, g);
48       analogWrite(bluePin,  b);
49     }
50 };
51
52 // Instanziamo un LED
53 RGBLed led(11, 10, 9);
54 /* L'oggetto viene istanziato qui e non nella funzione di setup()
55  *  perche' altrimenti la sua esistenza sarebbe legata solo
56  *  al contesto (scope) del setup(), non sarebbe disponibile nel loop()
57  */
58
59 void setup()  {
60   // I PIN mode vengono settati dal constructor
61 }
62
63 void loop() {
64   led.Arrossa();
65   delay(1000);
66   led.SetColor(255, 0, 255) ; // Mettiamo il LED in Green
67   delay(1000);
68
69 }