Data type con funzione
authorAndrea Manni <andrea@piffa.net>
Tue, 18 Apr 2017 12:58:20 +0000 (14:58 +0200)
committerAndrea Manni <andrea@piffa.net>
Tue, 18 Apr 2017 12:58:20 +0000 (14:58 +0200)
programming/structured_data_types/array_loop/array_loop.ino
programming/structured_data_types/struct/struct.ino
programming/structured_data_types/struct_risposta/lamp.h [new file with mode: 0644]
programming/structured_data_types/struct_risposta/struct_risposta.ino [new file with mode: 0644]

index 0ac64ba..32bf935 100644 (file)
@@ -1,8 +1,9 @@
 /* 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:
index 6dd619d..c0d50a7 100644 (file)
@@ -15,11 +15,11 @@ struct lampeggino {
   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()
@@ -30,10 +30,20 @@ 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.
+*/
+
+
diff --git a/programming/structured_data_types/struct_risposta/lamp.h b/programming/structured_data_types/struct_risposta/lamp.h
new file mode 100644 (file)
index 0000000..6a88397
--- /dev/null
@@ -0,0 +1,23 @@
+/* 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);
+}
diff --git a/programming/structured_data_types/struct_risposta/struct_risposta.ino b/programming/structured_data_types/struct_risposta/struct_risposta.ino
new file mode 100644 (file)
index 0000000..25b1c48
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+    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);
+}
+
+