]> git.piffa.net Git - sketchbook_andrea/blobdiff - programming/structured_data_types/oggetto_rgb/oggetto_rgb.ino
Loop e data type strutturati
[sketchbook_andrea] / programming / structured_data_types / oggetto_rgb / oggetto_rgb.ino
diff --git a/programming/structured_data_types/oggetto_rgb/oggetto_rgb.ino b/programming/structured_data_types/oggetto_rgb/oggetto_rgb.ino
new file mode 100644 (file)
index 0000000..9176f62
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+    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);
+}
+