Dubbi su utilizzo della classe String

Aggiornamento:

Ho creato il seguente programma per test per vedere se il programma gira tranquillamente per abbastanza tempo e sembra che funzioni perfettamente:

#include <MemoryFree.h>;

#define LED 13

String Counter;

int Contatore;

void setup() {

  delay(10);

  Serial.begin(115200);

  Counter = "Cocco";

  pinMode(LED, OUTPUT);

  delay(100);

}

void loop() {

  String Data = Counter;

  if (Counter == "Cocco") {
    Counter = "Ape";
  } else {
    Counter = "Cocco";
  }

  if (Contatore < 50) {

    Contatore++;

  } else {

    Serial.print("Testo : ");
    Serial.println(Data);

    Serial.println("Memory Free : ");
    Serial.println(freeMemory());

    Contatore = 0;

    digitalWrite(LED, !digitalRead(LED));

  }

  delay(10);

}

Il programma funziona come segue:

1.Scrivo nella variabile stringa Counter la parola "Cocco"
2.Trasferisco il messaggio di Counter a Data, Data è una Stringa temporanea.
3.Quando Counter è uguale a "Cocco" viene cambiata con "Ape"
4.E poi di nuovo a "Cocco"
5.Il ciclo si ripete ogni 10 millisecondi.
6.La variabile Contatore è incrementata di +1 ogni ciclo.
7.Quando raggiunge il valore 50 stampo su seriale il contenuto della varibile Data e quanta memoria ram ho disponibile.
8.Cambio lo stato del pin GPIO 13 ad ogni ciclo (ON,OFF - Toggle)
9.La variabile Contatore si resetta e il ciclo si ripete.

In pratica ogni 10 millisecondi vado a modificare sia la Stringa globale Counter sia la Stringa temporanea Data.

Vedo che la memoria disponibile, grazie alla librerira "MemoryFree.h" diminuisce quando inserisco la parola "Cocco" e diminuisce di 2 byte quando scrivo "Ape"

Non vedo diminuzione della memoria e ho lasciato l'Arduino UNO per un po' di minuti ma il lampeggio del led era sempre costante.

E' da tenere conto che la trasmissione dei dati sulle stringhe viene eseguita ogni 10 millisecondi un tempo abbastanza veloce per creare frammentazione e fare disastri, ma nulla di grave è successo...

Posso pensare che sia un caso? O è normale perché per logica non vado ad a creare mai nuove allocazioni? O comunque stringhe enormi?

Ho trovato altri link utili:

How to use Arduino Strings

Taming Arduino Strings Avoiding Fragementation and Out-of-Memory Issues

Grazie ancora dell'aiuto! :smiley: