perchè funziona solo a volte?

Con difficoltà (e molto copia e incolla), ho realizzato il 1° sketch che apparentemente sembra funzionare, pensato per movimentare 2 servo che riceveranno una stringa da suddividere in due interi e quindi posizionarli. Però dopo l'invio di 2 o 3 stringhe i servo si bloccano, qualcuno ha idea del perchè !!! Ringrazio per qualsiasi aiuto (e mi scuso per la mancata presentazione).

mov_servo.ino (2.43 KB)

Prima di tutto, nella sezione dove avevi messo il post c'è chiaramente scritto, in grassetto, di non postare nulla ... quindi, per favore, la prossima volta presta più attenzione, poi, essendo questo il tuo primo post, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione) e di leggere con attenzione il REGOLAMENTO ... Grazie.

Guglielmo

Una cosa, la loop() è già un ciclo, è inutile il while, meglio un if; invece di cosi:

void loop()
{ while (Serial.available() > 0) 
  {  ...
  }
}

Fai così:

void loop()        // la loop è già un grosso while
{ if (Serial.available() > 0) 
  {  ...
  }
}

Secondo, che scheda usi ? Arduino Uno ? Ha poca SRAM, solo 2K, con le String a runtime si rischia di esaurirla subito. Cerca e prova a mettere dentro al codice della loop la funzione freeRam() che ti dice quanta memoria SRAM libera c'e'. Secondo me la stai esaurendo.

int freeRam () {
 extern int __heap_start, *__brkval; 
 int v; 
 return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); 
}

Quindi nella loop() metti un Serial.print("free:"); Serial.println(freeRam());

Potresti non usare questo sistema ed usare direttamente la Serial.ParseInt()