--- /dev/null
+/*
+ Adafruit Arduino - Lesson 3. RGB LED
+
+ RGB LED: mpostare i colori per un LED RGB
+ common anode
+
+ Schema: http://lab.piffa.net/schemi/rgb.jpg
+ */
+
+byte pin[3] = {11, 10, 9}; // 2v a 20ma: che resistenza dovro usare?
+byte color[3] = {255, 255, 255};
+
+
+
+void setup()
+{
+ for (byte i = 0; i < 4; i++) {
+ pinMode(pin[i], OUTPUT);
+ }
+}
+
+
+void loop()
+{
+ analogWrite(pin[0], color[0]);
+ analogWrite(pin[1], color[1]);
+ analogWrite(pin[2], color[1]);
+}
+
+/* Domande:
+ 1. Che differenza c'e' tra le variabili dei pin e dei colori?
+ */
+
+
+
--- /dev/null
+/*
+ Adafruit Arduino - Lesson 3. RGB LED
+
+ RGB LED: mpostare i colori per un LED RGB
+ common anode
+
+ Schema: http://lab.piffa.net/schemi/rgb.jpg
+ */
+
+byte pin[3] = {11, 10, 9}; // 2v a 20ma: che resistenza dovro usare?
+
+struct color {
+ byte red ;
+ byte blue;
+ byte green;
+
+} ;
+
+color led;
+
+
+void setup()
+{
+ for (byte i = 0; i < 4; i++) {
+ pinMode(pin[i], OUTPUT);
+ }
+}
+
+
+void loop()
+{
+ analogWrite(pin[0], led.red);
+ analogWrite(pin[1], led.green);
+ analogWrite(pin[2], led.blue);
+}
+
+/* Domande:
+ 1. Potrei mettere i numeri dei PIN dentro lo stesso struct?
+ 2. Quale differenza funzionale c'e' tra i numeri dei PIN e i colori?
+ 2.1 Quando devo settare i pin e quante volte?
+ 2.2 Quando imposto i colori e quanto spesso?
+
+ 3. Sarebbe piu' elegante scrivere una funzione per gestire il setup dei PIN
+ e impostare i colori?
+ 3.1 Servira' una o piu' funzioni?
+ 4. Esiste un costrutto che mi permetta di legare le differenti caratteristiche
+ del LED RGB e contemporaneamente raggruppare le funzioni che tipicamente uso con questo?
+ */
+
+
+
--- /dev/null
+/*
+ Adafruit Arduino - Lesson 3. RGB LED
+
+ RGB LED: mpostare i colori per un LED RGB
+ common anode
+
+ Schema: http://lab.piffa.net/schemi/rgb.jpg
+ */
+
+class RGBLed {
+ const byte redPin ;
+ const byte greenPin ;
+ const 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 Color (byte r, byte g, byte b) {
+ // Imposta il colore di un LED RGB
+ byte redValue = r;
+ byte greenValue = g;
+ byte blueValue = b;
+
+ analogWrite(redPin, redValue);
+ analogWrite(greenPin, greenValue);
+ analogWrite(bluePin, blueValue);
+ }
+};
+
+// 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.Color(0,255,255) ; // Mettiamo il LED in Rosso
+ }