/* 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"
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'.
/*
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 ;
public:
RGBLed (byte pinR, byte pinG, byte pinB) ;
+ void SetColor (byte r, byte g, byte b) ;
void Red ();
void Green ();
void Blue ();
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
--- /dev/null
+/* 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
+}
+