Ai puristi del linguaggio

Salve ho uno sketch cosi realizzato

PROGMEM const char Alm21[]={"Allarme uno"};
PROGMEM const char Alm22[]={"Allarme due"};
PROGMEM const char Alm23[]={"Allarme tre"};

if (testo.substring(0,2) == "21") strcpy_P(txt, Alm21);
if (testo.substring(0,2) == "22") strcpy_P(txt, Alm22);
if (testo.substring(0,2) == "23") strcpy_P(txt, Alm23);

e cosi via . . ..
lo vorrei trasformare in un più elegante ciclo For . ..

Chi mi da assistenza ?
Potrei iniziare cosi . . . ma poi come proseguire . . . ????

for (int i = 21; i < 24; i++) {

String numero = String(i,DEC); //?
if (testo.substring(0,2) == numero) strcpy_P(txt, Alm21);

}

Grazie in anticipo per il vostro prezioso tempo.
Saluti
Paolo

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare.
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.

Prova così:

PROGMEM const char Alm21[]={"Allarme uno"};
PROGMEM const char Alm22[]={"Allarme due"};
PROGMEM const char Alm23[]={"Allarme tre"};

PROGMEM const char * Alm[]={Alm21,Alm22,Alm23};

if (testo.substring(0,2) == "21") strcpy_P(txt, Alm[0]);
if (testo.substring(0,2) == "22") strcpy_P(txt, Alm[1]);
if (testo.substring(0,2) == "23") strcpy_P(txt, Alm[2]);

anche un titolo piu consono non guasterebbe.
i puristi di quale linguaggio?
io non userei la classe String.

Infatti. Poi non sappiamo quante siano le casistiche. Se il primo carattere del comando dentro a testo è sempre 2, solo il secondo valore distingue, basterebbe una serie di if.
Oppure ora che hai un array di array (Alm) si può convertire il comando 2x in valore indice 0, 1, etc.
"21"-> 21 -> 21-21 =0
"22"-> 22 -> 22-21 =1

Grazie a tutti del contributo . . . ho del materiale da studiare ed anche . . . all'espressione del soggetto che non tutti è piaciuta . . . intendevo ai puristi del linguaggio di programmazione.

Saluti
Paolo

nid69ita:
Prova così:

PROGMEM const char Alm21[]={"Allarme uno"};

PROGMEM const char Alm22[]={"Allarme due"};
PROGMEM const char Alm23[]={"Allarme tre"};

PROGMEM const char * Alm[]={Alm21,Alm22,Alm23};

if (testo.substring(0,2) == "21") strcpy_P(txt, Alm[0]);
if (testo.substring(0,2) == "22") strcpy_P(txt, Alm[1]);
if (testo.substring(0,2) == "23") strcpy_P(txt, Alm[2]);





Questa funziona è quella che cercavo, ho dovuto però togliere PROGMEM in quanto il compilatore mi dava errore

Grazie ancora a tutti per il suggerimento

con un calcolo (limitato ai casi da te esposti)

int x=atoi(testo.substring(0,2));  // converto in numero vero
if(x>=21 && x<=23) 
{ x=x-21;        // 21-> 0  22->1  23->2 ovvero indice
  strcpy_P(txt, Alm[x]);
}

Grazie ancora de contributo, ma ho 50 array, per quello che volevo ottimizzare il codice con un ciclo for . . ed il suggerimento che mi avete dato e perfetto.
Grazie ancora