non riesco a usare le funzioni

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

http://programmazione.html.it/guide/lezione/1102/le-funzioni/

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 :slight_smile: 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