Standardoil:
Perché se non mettevo il prototipo non mi compilava, ho dato la colpa all'argomento di default, ma non sono sicuro.
Se non ricordo male, se definisci un valore di default allora devi usare il prototipo prima di invocare la funzione (ossia prototipo all'inizio del codice, e la funzione può poi stare ovunque). Se non usi default o se definisci la funzione sopra al resto (ovvero prima di utilizzarla) credo che non sia necessario il prototipo.
Ad esempio questo a te compila e gira?
void test(int a = 10) {
Serial.print("test(");
Serial.print(a);
Serial.println(")");
}
void setup() {
Serial.begin(9600);
test();
test(20);
}
void loop(){
}
PS: io difficilmente uso i valori di default, se non in C++ sotto forma di overload..