]> git.piffa.net Git - sketchbook_andrea/blobdiff - programming/structured_data_types/struct_risposta_pointers/struct_risposta_pointers.ino
Structured data types
[sketchbook_andrea] / programming / structured_data_types / struct_risposta_pointers / struct_risposta_pointers.ino
diff --git a/programming/structured_data_types/struct_risposta_pointers/struct_risposta_pointers.ino b/programming/structured_data_types/struct_risposta_pointers/struct_risposta_pointers.ino
new file mode 100644 (file)
index 0000000..e7be3a7
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+    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.
+
+Questa versione permette alla funzione lempeggia() di modificare una delle proprieta
+(  lo stato) dello struct rosso. Il fatto e' che una funzione non potrebbe modificare
+dei dati al suo esterno! Al massimo potrebbe ritornare un valore...
+
+Per superare questo si invoca la funziona con un riferimento ( & ) al dato originale
+e poi nel corpo della funzione si usano pointers (foo->bar eqivale a (*foo).bar, 
+l'operatore punto ha precedenza rispetto al pointer) per modificare un indirizzo di memoria
+esterno alla funzione.
+
+ Schema: http://lab.piffa.net/schemi/rgb.jpg
+ */
+
+
+#include "lamp.h"
+
+// instanziamo un lampeggino
+lampeggino rosso { 13, 1000, ">> Led Rosso <<"};
+
+void setup()
+{
+    pinMode(rosso.pin, OUTPUT);
+    Serial.begin(9600);
+}
+
+void loop()
+{
+    // Utilizziamo un lampeggiatore
+   lampeggia(&rosso);
+}