E perché? Ce ne è, che ho scritto tempo fa, ben ottimizzata e fa esattamente quello che cerchi ... SerialCmd e c'è un thread dedicato QUI ... poi, fai come vuoi
Continui però ad usare quella schifezza della classe String ...
Se avessi dedicato un po' di tempo a studiare la libreria che ti ho indicato, avresti scoperto che si fa tutto usando le stringhe classiche del 'C' ... evitando così, specie su piccole MCU, la possibilità di bei problemi con la memoria.
Scusa, mi spiegi quasta "idiosincasia" verso le librerie (che sono la cosa più semplice da usare, piuttosto che reinventare l'acqua calda)?
Oltretutto Arduino è OpenSource e le librerie vengono fornite come codice "sorgente" (quindi ben leggibile) ... ottimo strumento per imparare come gli altri hanno risolto un problema e magari anche tecniche che non si conoscono ...
String code;
#define PIN_LED 9
#define tempo 2000
int blink;
void setup() {
Serial.begin(115200);
pinMode(PIN_LED, OUTPUT);
help();
Serial.println(">");
}
void help() {
Serial.println(" SET LED ON / SET LED OFF / GET LED / SET LED BLINK :NUM");
}
void loop() {
if (Serial.available() > 0) {
code = Serial.readStringUntil('\n');
if (code.equals("SET LED ON")) {
digitalWrite(PIN_LED, HIGH);
}
if (code.equals("SET LED OFF")) {
digitalWrite(PIN_LED, LOW);
}
if (code.equals("GET LED")) {
Serial.println(digitalRead(PIN_LED));
}
int blink;
if (sscanf(code.c_str(), "SET LED BLINK : %d", &blink) > 0) {
for (int i = 0; i < blink; i++) {
digitalWrite(PIN_LED, HIGH);
delay(tempo);
digitalWrite(PIN_LED, LOW);
delay(tempo);
}
}
}
}
ma non mi piace.. proverò ad studiare la libreria..
grazie lo stesso e scusate del ritardo ma stavo male.