Offline
Sr. Member
Karma: 2
Posts: 384
|
 |
« on: May 19, 2012, 09:41:08 am » |
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??
|
|
|
|
|
Logged
|
|
|
|
|
Padova
Offline
Full Member
Karma: 0
Posts: 150
|
 |
« Reply #1 on: May 19, 2012, 09:55:09 am » |
Ciao, ma hai problemi in compilazione o non sai come dichiararle e invocarle?
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 81
Posts: 8184
:(){:|:&};:
|
 |
« Reply #2 on: May 19, 2012, 09:56:45 am » |
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)
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 2
Posts: 384
|
 |
« Reply #3 on: May 19, 2012, 10:04:55 am » |
Ciao, ma hai problemi in compilazione o non sai come dichiararle e invocarle?
non so come dichiararle
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 81
Posts: 8184
:(){:|:&};:
|
 |
« Reply #4 on: May 19, 2012, 10:21:24 am » |
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Sr. Member
Karma: 2
Posts: 384
|
 |
« Reply #5 on: May 19, 2012, 10:25:55 am » |
grazie
|
|
|
|
|
Logged
|
|
|
|
|
Padova
Offline
Full Member
Karma: 0
Posts: 150
|
 |
« Reply #6 on: May 19, 2012, 10:34:58 am » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Jr. Member
Karma: 2
Posts: 98
|
 |
« Reply #7 on: May 19, 2012, 11:18:51 am » |
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
|
|
|
|
|
Logged
|
|
|
|
|
Padova
Offline
Full Member
Karma: 0
Posts: 150
|
 |
« Reply #8 on: May 19, 2012, 11:34:19 am » |
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
|
|
|
|
|
Logged
|
|
|
|
|
BZ (I)
Offline
Brattain Member
Karma: 160
Posts: 15605
+39 349 2158303
|
 |
« Reply #9 on: May 19, 2012, 11:45:10 am » |
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
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Edison Member
Karma: 7
Posts: 2152
Arduino rocks
|
 |
« Reply #10 on: May 19, 2012, 01:11:03 pm » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 81
Posts: 8184
:(){:|:&};:
|
 |
« Reply #11 on: May 19, 2012, 01:53:24 pm » |
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
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Edison Member
Karma: 7
Posts: 2152
Arduino rocks
|
 |
« Reply #12 on: May 19, 2012, 02:03:03 pm » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 81
Posts: 8184
:(){:|:&};:
|
 |
« Reply #13 on: May 19, 2012, 02:30:48 pm » |
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
|
|
|
|
|
Logged
|
|
|
|
|
|