From: Andrea Manni Date: Tue, 18 Apr 2017 12:58:20 +0000 (+0200) Subject: Data type con funzione X-Git-Url: http://git.piffa.net/web?p=sketchbook_andrea;a=commitdiff_plain;h=98f12e9ba20d5b505b1b6506569e31af9ac3ba89 Data type con funzione --- diff --git a/programming/structured_data_types/array_loop/array_loop.ino b/programming/structured_data_types/array_loop/array_loop.ino index 0ac64ba..32bf935 100644 --- a/programming/structured_data_types/array_loop/array_loop.ino +++ b/programming/structured_data_types/array_loop/array_loop.ino @@ -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: diff --git a/programming/structured_data_types/struct/struct.ino b/programming/structured_data_types/struct/struct.ino index 6dd619d..c0d50a7 100644 --- a/programming/structured_data_types/struct/struct.ino +++ b/programming/structured_data_types/struct/struct.ino @@ -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 index 0000000..6a88397 --- /dev/null +++ b/programming/structured_data_types/struct_risposta/lamp.h @@ -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 // 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 index 0000000..25b1c48 --- /dev/null +++ b/programming/structured_data_types/struct_risposta/struct_risposta.ino @@ -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); +} + +