non riesco a usare le funzioni.
mi servirebbe usare le funzioni per strutturare meglio il codice.
dovrei dare in pasto una variabile a,b,diametro,alphauno,alphadue che dentro la funzione devono essere elaborate e restituire due variabili x,y da inviare a sua volta all'ultima funzione che in base al numero lo decodifica e lo stampa su dei led.
cercando su google funzioni arduino mi vengono solo delle pagine che parlano di quello che può fare arduino e robe del genere sapete se almeno esistono per arduino e come si usano??
Ciao,
ma hai problemi in compilazione o non sai come dichiararle e invocarle?
per forza, le funzioni sono del linguaggio, non di arduino.
il liguaggio è Wiring, tra l'altro praticamente identico al C, quindi puoi cercare "funzioni C" o "function wiring" (se cerchi roba per il wiring, devi usare l'inglese se no non trovi praticamente nulla)
critical:
Ciao,
ma hai problemi in compilazione o non sai come dichiararle e invocarle?
non so come dichiararle
grazie
La dichiarazione delle funzioni è del tipo:
return_type name_function([param_type param_name, ...]) {
body
}
invocazione: name_function([param_1,...]);
Come ha detto lesto sono come quelle del C.
giusto per chiarezza non puoi far ritornare due valori (x e y) da una sola funzione...
una soluzione potrebbe essere l'utilizzo dei puntatori insieme alle funzioni
ale92:
giusto per chiarezza non puoi far ritornare due valori (x e y) da una sola funzione...
una soluzione potrebbe essere l'utilizzo dei puntatori insieme alle funzioni
Esatto +1!! puntatori come parametri: all'interno della funzione modifichi i valori a cui i puntatori puntano e quando ritorni alla funzione chiamante per magia te li trovi modificati.
ciao
Puoi usare anche delle variabili globali (dichiarate fuori da qualsiasi funzione compreso setup() e loop() ) per passare dei valori alla e dalla funzione.
Ciao Uwe
Puoi usare anche delle variabili globali (dichiarate fuori da qualsiasi funzione compreso setup() e loop() ) per passare dei valori alla e dalla funzione.
Ciao Uwe
Si in genere si fa così specie in fase di test, ma poi è meglio scrivere le funzioni che prendo e ritornano argomenti.
bool addiziona(int op, int op1, int *result) {
result = op + op1;
if (result >= 0)
return false;
else
return true;
}
e la si usa così:
int result = 0;
bool isNegative;
isNegative = addiziona(10 + 2, &result);
L'operatore &estrae da result il puntatore e lo passa alla funzione che deve prendere ovviamente un puntatore.
Ciao.
contrariamente alla pratica comunq, sui microcontrollori meglio le variabili globali. Visto che lo stack è condiviso con la ram, si risparmia 2 byte ad ogni puntatore passato, ed è anche più semplice tenere il conto della ram utilizzata.
Questo poichè difficilmente il codice diventa tanto complesso da avere decine di globali, o da necessitare parametrizzazione delle funzioni per avere un differente target di variabili
contrariamente alla pratica comunq, sui microcontrollori meglio le variabili globali. Visto che lo stack è condiviso con la ram, si risparmia 2 byte ad ogni puntatore passato, ed è anche più semplice tenere il conto della ram utilizzata.
Questo poichè difficilmente il codice diventa tanto complesso da avere decine di globali, o da necessitare parametrizzazione delle funzioni per avere un differente target di variabili
Be se ha 10 variabili globali la cosa è sotto controllo, ma comincia a diventare un problema in programmi con più moduli, specie in fase di debug per non parlare di quando per un mese di dedichi ad altro e poi devi riprendere in mano il codice per apportare delle modifiche.
Ciao.
sì, il problema complessità, ma come dicevo si arduino questo problema si nota poco. molto più probabile avere brutture come accessi diretti a registri e simili