/* Knight Rider 2
- * --------------
- *
- * Array e uso dei cicli iterativi.
- *
+
+ Array e uso dei cicli iterativi.
+ Gli array sono omogeni: possono contenere solo dati dello stesso tipo.
+ Per l'uso avanzato degli array puo' essere utile approfondire l'uso dei pointers
+ (in particolare per passare un array a una funzione).
Schema semplificato:
byte pin ;
long pausa;
boolean stato;
- char feedback[20];
+ char feedback[20]; // Messaggio via seriale
} ;
-// instanziamo il lampeggino
+// instanziamo un lampeggino
lampeggino rosso { 13, 1000, 0, ">> Led Rosso <<"};
void setup()
void loop()
{
- // Facciamo un lampeggiatore
+ // Utilizziamo un lampeggiatore
digitalWrite(rosso.pin,rosso.stato);
Serial.println(rosso.feedback);
rosso.stato = !rosso.stato ;
delay(rosso.pausa);
}
+/* Domande
+
+ 1. Provare a creare una funzione che accetti come parametro un lampeggino
+ e svolga qualche operazione su di esso (come quello che si vede nel loop).
+
+
+ Risposta nell'esercizio successivo.
+*/
+
+
--- /dev/null
+/* Lamp Header
+ *
+ * Senza un file Header Arduino IDE non ne vuole sapere
+ * di riconosce un data type custom da utilizzare con una funzione.
+ */
+
+#include <Arduino.h> // Senza non si possono usare i byte, digitaWrite...
+
+struct lampeggino {
+ byte pin ;
+ long pausa;
+ boolean stato;
+ char feedback[20]; // Messaggio via seriale
+} ;
+
+void lampeggia (lampeggino oggetto) {
+ // Lampeggia e manda un feedback via seriale
+
+ digitalWrite(oggetto.pin, oggetto.stato);
+ Serial.println(oggetto.feedback);
+ oggetto.stato = !oggetto.stato ;
+ delay(oggetto.pausa);
+}
--- /dev/null
+/*
+ struct
+
+ Struct e' un tipo struttura di dati non omogenea,
+ puo' contenere tipi di dati diversi a differenza di un array.
+
+ Possiamo quindi raggruppare diverse proprieta' di un oggetto
+ sotto lo stesso identificatore.
+
+ Schema: http://lab.piffa.net/schemi/rgb.jpg
+ */
+
+
+#include "lamp.h"
+
+// instanziamo un lampeggino
+lampeggino rosso { 13, 1000, 0, ">> Led Rosso <<"};
+
+void setup()
+{
+ pinMode(rosso.pin, OUTPUT);
+ Serial.begin(9600);
+}
+
+void loop()
+{
+ // Utilizziamo un lampeggiatore
+ lampeggia(rosso);
+}
+
+