osc

Pourquoi remets tu ton code faux que j'ai déjà corrigé ci-dessus ?
char oscadr[] = adr3(); est FAUX et ARCHI FAUX pour plusieurs raisons

adr3 est un tableau de char, donc ça n'a aucun sens de lui accoler des parenthèse qui sont l'appanage des fonctions.
char oscadr[] est une déclaration de variable illégale. Acceptable comme déclaration de paramètre de fonction, cette syntaxe n'alloue pas de variable.

la fonction int16_t OSCMessage::beginMessage( const char *_addr); attend donc comme paramètre un pointeur sur char.
Comme indiqué dans ma 1ere répondre, c'est adr3 qu'il faut passer

Tu as déjà fait :
adr1 = String("/Ard/"); --> adr1 = "/Ard/";
puis
adr2 = adr1 + i; --> adr2 = "/Ard/2" ... adr2 = "/Ard/8"
Ensuite tu copie dans un tableau de char :

char adr3[50];
adr2.toCharArray(adr3, 50);

Puis tu passes à beginMessage :

mes.beginMessage(adr3);

Par ailleurs je note aussi dans ton code

adr2 = String ();

Inutile, adr2 est déjà déclarée comme une string