]> git.piffa.net Git - sketchbook_andrea/commitdiff
clean up
authoreaman <andrea@piffa.net>
Wed, 26 Oct 2016 00:36:13 +0000 (02:36 +0200)
committereaman <andrea@piffa.net>
Wed, 26 Oct 2016 00:36:13 +0000 (02:36 +0200)
Inheritance

libraries/common/common.cpp
libraries/common/common.h
libraries/common/examples/eredita/eredita.ino [new file with mode: 0644]

index 1eed6a2c3a7353115bed2e0c033e09ce0ffe0628..5ddcaeece0f5b9df9d6910fc6542843f47afbc37 100644 (file)
@@ -1,11 +1,6 @@
 /*  Common
-  Collezione di funzioni e oggetti comuni incontrati durante
-  i vari esercizi.
-
-  Source file
-  Contiene il codice C++ delle funzioni e degli oggetti,
-  nel file common.h ci sono gli headers: prototipi.
-
+ *
+ *  Oggetti di uso comune
  */
 
 #include "Arduino.h"
@@ -27,88 +22,60 @@ RGBLed::RGBLed(byte pinR, byte pinG, byte pinB) {
       pinMode(greenPin, OUTPUT);
 };
 
+void RGBLed::SetColor (byte r, byte g, byte b) {
+// Imposta il colore di un LED RGB
+      analogWrite(redPin,   r);
+      analogWrite(greenPin, g);
+      analogWrite(bluePin,  b);
+    };
+
 void RGBLed::Red () {
 // Accende il LED di rosso
-      analogWrite(redPin,   0);
-      analogWrite(greenPin, 255);
-      analogWrite(bluePin,  255);
+      SetColor(0,255,255);
     };
 
 void RGBLed::Green () {
 // Accende il LED di verde
-      analogWrite(redPin,   255);
-      analogWrite(greenPin, 0);
-      analogWrite(bluePin,  255);
+      SetColor(255,0,255);
     };
 
 void RGBLed::Blue () {
 // Accende il LED di blu
-      analogWrite(redPin,   255);
-      analogWrite(greenPin, 255);
-      analogWrite(bluePin,  0);
+      SetColor(255,255,0);
     };
 
 void RGBLed::Magenta () {
 // Accende il LED di magenta
-      analogWrite(redPin,   0);
-      analogWrite(greenPin, 255);
-      analogWrite(bluePin,  0);
+      SetColor(0,255,0);
     };
 
 void RGBLed::Cyano () {
 // Accende il LED di Cyano
-      analogWrite(redPin,   255);
-      analogWrite(greenPin, 0);
-      analogWrite(bluePin,  0);
+      SetColor(255,0,0);
     };
 
 void RGBLed::Yellow () {
 // Accende il LED di giallo
-      analogWrite(redPin,   0);
-      analogWrite(greenPin, 0);
-      analogWrite(bluePin,  255);
+      SetColor(0,0,255);
     };
 
 void RGBLed::White () {
 // Accende il LED 
-      analogWrite(redPin,   0);
-      analogWrite(greenPin, 0);
-      analogWrite(bluePin,  0);
+      SetColor(0,0,0);
     };
 
 void RGBLed::Off () {
 // Spegne il LED 
-      analogWrite(redPin,   255);
-      analogWrite(greenPin, 255);
-      analogWrite(bluePin,  255);
+      SetColor(255,255,255);
     };
 
-void RGBLed::SetColor (byte r, byte g, byte b) {
-      // Imposta il colore di un LED RGB
-
-      analogWrite(redPin,   r);
-      analogWrite(greenPin, g);
-      analogWrite(bluePin,  b);
-    };
 
 
 //////////////////
 // Funzioni
 
-void brilla(byte pin) {
-  // Accende e spegne il LED senza un argomento 
-  // per impostare la velocita' con delay().
-  const int velocita = 500;
-
-pinMode(pin, OUTPUT); 
-  // sequenze di istruzione: accendere e spegnere il LED
-  digitalWrite(pin, HIGH);   // turn the LED on (HIGH is the voltage level)
-  delay(velocita);               // wait for a second
-  digitalWrite(pin, LOW);    // turn the LED off by making the voltage LOW
-  delay(velocita);               // wait for a second
-};
 
-void brilla(byte pin, int velocita) {
+void brilla(byte pin, int velocita ) { // Defalt value di velocita' solo nell'Header
   // Accende e spegne il LED accetando un argomento 
   // per impostare la velocita'.
 
index e1b0cf061a58dfca12b9a95e063b7dbf1f0185e9..c9072a15e72732d678e3f5a4dfc2642959e953d2 100644 (file)
@@ -1,24 +1,18 @@
 /*
   Common Class
 
-  Collezione di funzioni e oggetti comuni incontrati durante
-  i vari esercizi.
-
-  Header file
-  Contiene i prototipi delle funzioni e degli oggetti,
-  il codice e' nel fine *.cpp
+  Oggetti comuni
 
 */
 
 #include "Arduino.h"
-#ifndef common_h // Questi cicli IF, gestiti come macro da preprocessor
-#define common_h // fanno si che questo file non venga incluso piu' volte
+#ifndef common_h
+#define common_h
 
 
-/////////////////////////////////////////////
 class RGBLed {
   // Classe rappresentativa di un LED RGB
-  
+  protected:    // Vedi esempio Ereditarieta'
     byte redPin ;
     byte greenPin ;
     byte bluePin ;
@@ -28,6 +22,7 @@ class RGBLed {
 
   public:
     RGBLed (byte pinR, byte pinG, byte pinB) ;
+       void SetColor (byte r, byte g, byte b) ;
        void Red ();
     void Green ();
     void Blue ();
@@ -36,10 +31,8 @@ class RGBLed {
     void White ();
     void Yellow ();
     void Off ();
-       void SetColor (byte r, byte g, byte b) ;
 };
 
-/////////////////////////////////////////////
-void brilla(byte pin, int velocita = 500) ;
+void brilla(byte pin, int velocita = 200) ;
 
 #endif
diff --git a/libraries/common/examples/eredita/eredita.ino b/libraries/common/examples/eredita/eredita.ino
new file mode 100644 (file)
index 0000000..88a718b
--- /dev/null
@@ -0,0 +1,39 @@
+/* Ereditarieta'
+   
+   La classe SuperLED definita in questo sketch
+   eredita le caratteristiche di RGBLed e introduce un nuovo metodo.
+
+*/
+
+#include <common.h> // L'orine e' importante: prima l'include,
+                    // poi la dichiarazione della nuova classe (non a fondo pagina)
+                    // poi potremo usare la nuova classe
+
+class SuperLED : public RGBLed { // Ereditamo dalla classe RGBLed
+    // Nuovi colori per RGBLed
+
+  using RGBLed::RGBLed ;  // Richiamiamo il constructor del genitore
+  public:
+    void Violet () {        // Nuovo metodo
+    // Accende il LED di viola
+          analogWrite(redPin,   255 - 238);
+          analogWrite(greenPin, 255 - 130);
+          analogWrite(bluePin,  255 - 238);
+        };
+};
+
+void setup() {
+  // I PINs vengono impostati dalla dichiarazione dell'ogetto.
+}
+
+// Instanziamo un LED
+SuperLED led(11, 10, 9); //Istanziamo un oggetto led facente parte
+                         // della inuova classe SuperLed che eredita da RGBLed
+
+void loop() {
+  led.Violet(); // Nuovo metodo
+  delay(1000);
+  led.Off();
+  delay(1000);  // Vecchio metodo
+}
+