X-Git-Url: http://git.piffa.net/web?p=sketchbook_andrea;a=blobdiff_plain;f=programming%2Fstructured_data_types%2Fstruct_risposta_pointers%2Fstruct_risposta_pointers.ino;fp=programming%2Fstructured_data_types%2Fstruct_risposta_pointers%2Fstruct_risposta_pointers.ino;h=e7be3a7c9bd1a88a8b5fd5d6ad776d06095bd3cf;hp=0000000000000000000000000000000000000000;hb=b46e75aacd9a0d7e318d5ef06730bf1e701ae9f5;hpb=e4de8b95aa9b8019b3fff9416918a4840aae46b5 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 index 0000000..e7be3a7 --- /dev/null +++ b/programming/structured_data_types/struct_risposta_pointers/struct_risposta_pointers.ino @@ -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); +}