Loading...
Pages: [1]   Go Down
Author Topic: Funzione come costante?  (Read 201 times)
0 Members and 1 Guest are viewing this topic.
Quartu Sant'Elena, Sardinia, Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

salve a tutti, è da un pò che sto cercando di rendere i miei sketch più leggibili, mi chiedevo se esiste un modo di richiamare un pezzo di sketch (in particolare devo richiamare le istruzioni per far girare uno stepper bipolare) utilizzando una costante.
ho provato con float, ma ho errori con i punti-e-virgola e, se le metto, anche con le parentesi
potete aiutarmi?
Logged

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16431
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Spiegati meglio... una funzione in C si richiama con il semplice nome seguito da una coppia di parentesi, ovviamente prima devi dichiarare la funzione da qualche parte del codice. Esempio:

Code:
void loop() {
  miaFunzione();
}

void miaFunzione() {
  ...il codice
}

Se a questa funzione devi passare un parametro, devi fare in modo che la dichiarazione della funzione contenga il codice per riceverlo:

Code:
void loop() {
  miaFunzione(12.3);
}

void miaFunzione(float parametro) {
  ...il codice
}

Se poi deve restituire un valore, allora devi dichiarare che tipo di dato restituisce:

Code:
void loop() {
  int a = miaFunzione(12.3);
}

int miaFunzione(float parametro) {
  ...il codice
  return qualcosa;
}
Logged


Quartu Sant'Elena, Sardinia, Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ricordavo che con void era possibile farlo, però facendo qualche prova avevo errori e ricontrollando sul sito Arduino vedevo che veniva utilizzato solo per setup e loop, quindi pensavo fosse una scelta sbagliata.
ma quindi per esempio un

void prova () {
...
}

andrebbe scritto prima del void loop se voglio utilizzarlo nel loop e/o prima di void setup se volessi richiamare le istruzioni già nel setup?

Non ho ben capito che cosa intendi per parametro, ricordo di aver letto su come si dovevano usare le parentesi tonde, che solitamente lascio vuote, quando ero agli inizi; però non me lo ricordo...
« Last Edit: January 30, 2013, 05:13:43 pm by Aledexter » Logged

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16431
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

1) void indica solo che la funzione non deve restituire nulla. Se la funzione la dichiari prima del setup, tra il setup ed il loop oppure dopo il loop non cambia nulla. L'importante è che nello sketch ci sia.
2) un "parametro" è un dato passato alla funzione chiamata.
Logged


Quartu Sant'Elena, Sardinia, Italy
Offline Offline
Jr. Member
**
Karma: 0
Posts: 89
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

quindi un parametro potrebbe essere il valore di una variabile utilizzata nella funzione presa, giusto come esempio, da un pin analogico oppure da seriale? E pertanto deve essere adatto al tipo e alla grandezza del dato?

grazie comunque della risposta leo, ora vado che è tardi, domani farò delle prove
Buonanotte!
Logged

Cagliari
Offline Offline
Faraday Member
**
Karma: 49
Posts: 3000
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,
ti consiglio un lettura di questa guida --> http://www.html.it/guide/guida-c/
In particolare il capitolo 24 parla delle funzioni.
Logged

IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85
Ultimi acquisti:
CodeBender: http://codebender.cc/register/?referrer=PaoloP

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16431
Don't know what I do
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

quindi un parametro potrebbe essere il valore di una variabile utilizzata nella funzione presa, giusto come esempio, da un pin analogico oppure da seriale? E pertanto deve essere adatto al tipo e alla grandezza del dato?

grazie comunque della risposta leo, ora vado che è tardi, domani farò delle prove
Buonanotte!
Un parametro è un dato che potrebbe servire alla funzione.

Immagina questo. Delay è una funzione che ferma il tuo codice per un certo lasso di tempo. Per funzionare correttamente ha bisogno di un dato, fondamentale: il tempo che deve attendere. Quel dato si chiama parametro, e glielo passi alla funzione mettendolo fra parentesi quando la chiami, ad esempio:
delay(1000)
anche analogRead è una funzione. Come la delay necessita di un parametro, il pin su cui fare la lettura analogica:
analogRead(Pin)
ma a differenza della delay essa restituisce un valore:
risultato = analogRead(pin)

Delay è perciò una funzione di tipo void, che non restituisce niente, mentre analogRead è una funzione che restituisce un valore
Logged


Pages: [1]   Go Up
Print
 
Jump to: