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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy