]> git.piffa.net Git - sketchbook_andrea/commitdiff
Intro obj
authoreaman <andrea@piffa.net>
Mon, 12 Dec 2016 10:27:11 +0000 (11:27 +0100)
committereaman <andrea@piffa.net>
Mon, 12 Dec 2016 10:27:11 +0000 (11:27 +0100)
RGB_LED/rgb_6_obj/rgb_6_obj.ino [deleted file]
RGB_LED/rgb_6_quasi_obj/rgb_6_quasi_obj.ino [new file with mode: 0644]
RGB_LED/rgb_7_obj/rgb_7_obj.ino [new file with mode: 0644]

diff --git a/RGB_LED/rgb_6_obj/rgb_6_obj.ino b/RGB_LED/rgb_6_obj/rgb_6_obj.ino
deleted file mode 100644 (file)
index 23c34e1..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-    RGB Object
-
-    Gestione di un LED RGB tramite programmazione a oggetti
-
- Schema: http://lab.piffa.net/schemi/rgb.jpg
- */
-
-class RGBLed {
-  // Classe rappresentativa di un LED RGB
-  
-    byte redPin ;
-    byte greenPin ;
-    byte bluePin ;
-    byte redValue ;
-    byte greenValue ;
-    byte blueValue ;
-
-    // Constructor: come viene instanziato un oggetto facente parte della classe
-  public:
-    RGBLed(byte pinR, byte pinG, byte pinB)
-    {
-      // Carichiamo i valori dei PIN dentro alle proprieta'
-      redPin    = pinR ;
-      greenPin  = pinG ;
-      bluePin   = pinB ;
-
-      // Equvalente 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);
-
-}
diff --git a/RGB_LED/rgb_6_quasi_obj/rgb_6_quasi_obj.ino b/RGB_LED/rgb_6_quasi_obj/rgb_6_quasi_obj.ino
new file mode 100644 (file)
index 0000000..7150a1f
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+    RGB Object (quasi!)
+
+    Gestione di un LED RGB tramite programmazione a oggetti
+    Esercizio intermedio: manca constructor.
+
+ Schema: http://lab.piffa.net/schemi/rgb.jpg
+ */
+
+class RGBLed {
+  // Classe rappresentativa di un LED RGB
+  
+    byte redPin =11;
+    byte greenPin =10;
+    byte bluePin =9;
+    byte redValue ;
+    byte greenValue ;
+    byte blueValue ;
+
+  public:
+    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);
+    }
+} led; // Dichiariamo un instanza dell'oggetto
+
+
+void setup()  {
+      pinMode(9, OUTPUT);
+      pinMode(10, OUTPUT);
+      pinMode(11, OUTPUT);
+}
+
+void loop() {
+  led.Arrossa();
+  delay(1000);
+  led.SetColor(255, 0, 255) ; // Mettiamo il LED in Green
+  delay(1000);
+
+}
+
+/* Domande
+ 1. Come posso fare per instanziare un altro oggetto LED?
+ 2. Posso accedere (leggere / modificare) le proprieta' dell'oggetto?
+ 3. A quali di queste proprieta' potrei voler accedere?
+ 4. Devo comunque abilitare i PIN come OUTPUT nel setup(): sarebbe possibile
+    farlo tramite una funione, magari automaticamente?
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ 1. Mi serve una funzione che permetta di assegnare delle proprieta come i PIN
+ 2. Al momento no: sono tutte PRIVATE. provate a spostarne alcune sotto
+    la dichiarazione PUBLIC .
+ 3. Ad es. i colori che vado a modificare, i numeri dei pin su suppone 
+    debbano restare immutati.
+ 4. Per usare una funzione nel setup() bisognerebbe rendere pubbliche 
+    le proprieta' che indicano i PIM. 
+       Meglio sarebbe avere una funzione che venga invocata una sola volta 
+       al momento di instanziare l'oggetto. Un CONSTRUCTOR .
+ */
+
diff --git a/RGB_LED/rgb_7_obj/rgb_7_obj.ino b/RGB_LED/rgb_7_obj/rgb_7_obj.ino
new file mode 100644 (file)
index 0000000..e63ace4
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+    RGB Object
+
+    Gestione di un LED RGB tramite programmazione a oggetti
+
+ 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:
+    // Public properties
+    byte redValue ;
+    byte greenValue ;
+    byte blueValue ;
+
+    // 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 ;
+
+      // Equvalente 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);
+
+}
+
+/* Domande
+ 1. Provate ad accedere (serial print oppure modificare) le proprieta private e pubbliche.
+
+ */
+