// Prototipo delle funzioni (cosi posso definirle dopo)
void funzione1();
void funzione2();
void funzione3();
void funzione4();
// Dichiarazione del tipo di dati per la funzione void(void)
typedef void (*FunctionPtr)(void);
// Struttura che memorizza il puntatore alla funzione e il nome
struct MyFunctions {
const char* name;
FunctionPtr function;
};
// Array di struct MyFunctions
MyFunctions functions[] = {
{"funzione1", funzione1},
{"funzione2", funzione2},
{"funzione3", funzione3},
{"funzione4", funzione4}
};
void setup() {
Serial.begin(115200);
Serial.println("Inserisci il nome della funzione da eseguire:");
}
void loop() {
while (Serial.available()) {
String inputStr = Serial.readStringUntil('\n');
Serial.print("Hai inserito: ");
Serial.println(inputStr);
for (auto & item : functions) {
if (inputStr.indexOf(item.name) > -1) {
// Se la variabile contiene il nome della funzione da chiamare
item.function();
}
}
}
}
void funzione1() {
Serial.println("Chiamata funzione1()");
}
void funzione2() {
Serial.println("Chiamata funzione2()");
}
void funzione3() {
Serial.println("Chiamata funzione3()");
}
void funzione4() {
Serial.println("Chiamata funzione4()");
}