Gestione e trasferimento stringhe da una funzione all'altra

Spero che anche questa volta, come già fatto in precedenza, mi possiate aiutare…
Sto cercando di leggere delle stringhe dalla memoria per poi gestirle tramite un vettore di stringhe. Durante la fase di lettura dalla EEPROM non ho nessun problema, però quando cerco di gestire le stringhe fuori dalla funzione readfromEEPROM(), il programma non funziona come dovrebbe…
Vabbè passiamo ai fatti: xD
Quando carico questo sketch:

#include <EEPROM.h>

int numtags; //Numero dei tag presenti in memoria
String* allowedTags;
void setup()
{
  Serial.begin(9600);
  numtags = EEPROM.read(0); //Nella locazione 0 è memorizzato il numero dei tag presenti in memoria
  readfromEEPROM();
  for (int i=0; i<numtags; i++)
  {
    Serial.println(allowedTags[i]);
  }
}

void loop()
{
}

void readfromEEPROM() 
{
  int i = 0, j, m;
  String readtag; //Stringa temporanea per il caricamento dalla EEPROM;
  while (i < numtags)
  {
    m=0; //m mi serve per poter scrivere il carattere sulla stringa temporanea
    for (j=((i*10)+1); j<=((i*10)+10); j++)
    {
      readtag.setCharAt(m, EEPROM.read(j));
      m++;
    }
    readtag.setCharAt(10, '\0');
    allowedTags[i] = readtag;
    i++;
  }
}

il programma sembra bloccarsi… e sul monitor seriale non appare nulla :frowning:

L’unica informazione aggiuntiva che vi posso dare è che il contenuto di memoria che il programma va a leggere è questo (verificato con uno sketch a parte):
5 <–EEPROM[0]
04146E8BDD <–EEPROM[1-10]
04146E8BDD <–EEPROM[11-20]
04146E8BDD <–EEPROM[21-30]
04146E8BDD <–EEPROM[31-40]
04146E8BDD <–EEPROM[41-50]
(ho formattato i caratteri in questo modo, così potete capire quale dovrebbe essere l’uscita sul monitor seriale)

Secondo me l’errore sta in questa istruzione: “allowedTags[i] = readtag;” però ho bisogno di trasferire il contenuto di readtag in allowedTags[i], ma non so che istruzione usare (memcpy non funziona!!!)

Vi ringrazio fin da subito per eventuali aiuti che mi dare! :smiley:

P.S. Ho provato anche con:

void readfromEEPROM() 
{
  int i = 0, j, m;
  String readtag; //Stringa temporanea per il caricamento dalla EEPROM;
  while (i < numtags)
  {
    m=0; //m mi serve per poter scrivere il dato sul vettore temporaneo
    for (j=((i*10)+1); j<=((i*10)+10); j++)
    {
      allowedTags[i].setCharAt(m, EEPROM.read(j));
      m++;
    }
    allowedTags[i].setCharAt(10, '\0');
    i++;
  }
}

ma il risultato non cambia! Si blocca comunque!

Non usare stringhe perché fanno problemi con Arduino. Usa dei array di char. Definisci le variabli fuori dalla funzinoi; vedi variabili globali.

Ciao UWe