+++ /dev/null
-/*
- 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);
-
-}
--- /dev/null
+/*
+ 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 .
+ */
+
--- /dev/null
+/*
+ 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.
+
+ */
+