+/*
+ RGB Object
+
+ Un oggetto puo' contenere tutte le proprieta' di un elemento
+ assieme ai metodi (le funzioni) che lo caratterizzano.
+
+ In aggiunta il constructor e' una funzione richiamata al momento
+ di instanziare l'oggetto che puo' essere usata per attivare PIN,
+ assegnare variabili.
+
+
+ Schema: http://lab.piffa.net/schemi/rgb.jpg
+ */
+
+class RGBLed {
+ // Classe rappresentativa di un LED RGB
+
+ // Private properties, le proprieta' sono private per default
+ byte redPin ;
+ byte greenPin ;
+ byte bluePin ;
+
+ public:
+ // Constructor: come viene instanziato un oggetto facente parte della classe
+ RGBLed(byte pinR, byte pinG, byte pinB)
+ {
+ // Carichiamo i valori dei PIN dentro alle proprieta'
+ redPin = pinR ;
+ greenPin = pinG ;
+ bluePin = pinB ;
+
+ // Equivalente del Setup() per inizializzare i PIN
+ pinMode(redPin, OUTPUT);
+ pinMode(greenPin, OUTPUT);
+ pinMode(greenPin, OUTPUT);
+ }
+
+ void Arrossa () {
+ // Metodo = funzione dell'oggetto
+ // Imposta il colore di un LED RGB a rosso
+
+ analogWrite(redPin, 0);
+ analogWrite(greenPin, 255);
+ analogWrite(bluePin, 255);
+ }
+
+ void SetColor (byte r, byte g, byte b) {
+ // Imposta il colore di un LED RGB
+
+ analogWrite(redPin, r);
+ analogWrite(greenPin, g);
+ analogWrite(bluePin, b);
+ }
+};
+
+// Instanziamo un LED
+RGBLed led(11, 10, 9);
+/* L'oggetto viene istanziato qui e non nella funzione di setup()
+ perche' altrimenti la sua esistenza sarebbe legata solo
+ al contesto (scope) del setup(), non sarebbe disponibile nel loop()
+ */
+
+void setup() {
+ // I PIN mode vengono settati dal constructor
+}
+
+void loop() {
+ led.Arrossa();
+ delay(1000);
+ led.SetColor(255, 0, 255) ; // Mettiamo il LED in Green
+ delay(1000);
+}
+