Go Down

Topic: non riesco a usare le funzioni (Read 1 time) previous topic - next topic

ilmandorlone

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??

critical

Ciao,
ma hai problemi in compilazione o non sai come dichiararle e invocarle?

lesto

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)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

ilmandorlone


Ciao,
ma hai problemi in compilazione o non sai come dichiararle e invocarle?

non so come dichiararle

lesto

http://programmazione.html.it/guide/lezione/1102/le-funzioni/
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

ilmandorlone


critical

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.

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

critical


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

uwefed

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

MauroTec

Quote
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.
AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

lesto

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
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

MauroTec

Quote
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.
AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

lesto

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
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up