From cdfee5cfe2f5dd8cd7a8c61cfda797ed096d1d86 Mon Sep 17 00:00:00 2001 From: eaman Date: Wed, 26 Oct 2016 02:36:13 +0200 Subject: [PATCH] clean up Inheritance --- libraries/common/common.cpp | 69 +++++-------------- libraries/common/common.h | 19 ++--- libraries/common/examples/eredita/eredita.ino | 39 +++++++++++ 3 files changed, 63 insertions(+), 64 deletions(-) create mode 100644 libraries/common/examples/eredita/eredita.ino diff --git a/libraries/common/common.cpp b/libraries/common/common.cpp index 1eed6a2..5ddcaee 100644 --- a/libraries/common/common.cpp +++ b/libraries/common/common.cpp @@ -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'. diff --git a/libraries/common/common.h b/libraries/common/common.h index e1b0cf0..c9072a1 100644 --- a/libraries/common/common.h +++ b/libraries/common/common.h @@ -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 index 0000000..88a718b --- /dev/null +++ b/libraries/common/examples/eredita/eredita.ino @@ -0,0 +1,39 @@ +/* Ereditarieta' + + La classe SuperLED definita in questo sketch + eredita le caratteristiche di RGBLed e introduce un nuovo metodo. + +*/ + +#include // 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 +} + -- 2.39.2