Problema OSC + Arduino Ethernet

Salve a tutti. Con l’intenzione di comandare Arduino tramite TouchOSC del mio iPhone mi sono messo a scrivere un programma
(ispirato dallo sketch di Mauro Alfieri http://www.mauroalfieri.it/elettronica/arduino-osc-iphone-e-sei-led-lo-sketch.html) tramite il quale potevo accendere sei led con l’applicazione OSC di iPhone.
Ho adattato lo sketch prima citato alle funzioni della nuova libreria OSC (ArdOSC.h di Recotana) ma nonostante abbia ricontrollato più e più volte, non riesco ancora a trovare l’errore per cui io non riesca a comandare la Ethernet Board. Su Arduino noto che le luci Tx e Rx si accendono alla pressione dei tasti su iPhone ma i led rimangono spenti.
Il programma è:

#include <Ethernet.h>
#include <ArdOSC.h>
#include <SPI.h>

int ledA=2;
int ledB=3;
int ledC=4;
int ledD=5;
int ledE=6;
int ledF=7;

OSCMessage recMes;  //ricezione dell'app OSC
OSCServer server;   //istanza server per associare il dispositivo

byte serverMac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x44, 0x91 };  //MAC arduino
byte serverIp[]  = { 192, 168, 1, 200 }; //IP arduino
int serverPort   = 10000;   //porta arduino

char *topAddress="/bott";  
char *subAddress[6]={"/oledA" , "/oledB" , "/oledC" , "/oledD" , "/oledE" , "/oledF"};
void setup() {
  
  Ethernet.begin(serverMac,serverIp);
  server.begin(serverPort);
  pinMode(ledA,OUTPUT);
  pinMode(ledB,OUTPUT);
  pinMode(ledC,OUTPUT);
  pinMode(ledD,OUTPUT);
  pinMode(ledE,OUTPUT);
  pinMode(ledF,OUTPUT);
   
  digitalWrite(ledA, LOW);
  digitalWrite(ledB, LOW);
  digitalWrite(ledC, LOW);
  digitalWrite(ledD, LOW);
  digitalWrite(ledE, LOW);
  digitalWrite(ledF, LOW);
  
}

void loop() {
    if  ( server.aviableCheck() ) {
      if ( strcmp( recMes.getOSCAddress() , "/bott") ) {
       if (strcmp( recMes.getOSCAddress() ,"/bott/oledA" )== 0 ) {
        digitalWrite(ledA,getIntValue(&recMes)); }
       if (strcmp( recMes.getOSCAddress() , "/bott/oledB" )== 0 ) {
        digitalWrite(ledB,getIntValue(&recMes)); }
       if (strcmp( recMes.getOSCAddress() , "/bott/oledC" )== 0 ) {
        digitalWrite(ledC,getIntValue(&recMes)); }
       if (strcmp( recMes.getOSCAddress() , "/bott/oledD" )== 0 ) {
        digitalWrite(ledD,getIntValue(&recMes)); }
       if (strcmp( recMes.getOSCAddress() , "/bott/oledE" )== 0 ) {
        digitalWrite(ledE,getIntValue(&recMes)); }
       if (strcmp( recMes.getOSCAddress() , "/bott/oledF" )== 0 ) {
        digitalWrite(ledF,getIntValue(&recMes)); }
      }
   }
}

// --------------------------UTILITY----------------------------
 
int getIntValue(OSCMessage *mes){
    switch( mes->getArgTypeTag(0) ){
        case 'i': { return mes->getArgInt32(0); }
        break;
 
        case 'f':  { return int(mes->getArgFloat(0)); }
        break;
      }
}

Se gentilmente potete dirmi come risolvere questo problema ve ne sarei grato visto che sono due giorni che batto la testa sul muro senza trovare soluzioni. XD

Benvenuto. :slight_smile:
Ti invitiamo a presentarti qui: Re: Presentazioni nuovi iscritti, fatevi conoscere da tutti! - Generale - Arduino Forum
e a leggere il regolamento: [REGOLAMENTO] Come usare questa sezione del forum - Italiano - Arduino Forum

Arduino è collegato al PC tramite USB?
Perchè non fai un pò di debug, usando il Monitor Seriale ?
Nel setup() aggiungi come prime istruzioni:

delay(1000);
Serial.begin(9600);

Ora con Serial.println() puoi stampare nel Monitor Seriale (richiamabile da menu dell'IDE)
Ad esempio questo puoi modificarlo così per vedere se arriva qualcosa:

void loop() {
    if  ( server.aviableCheck() ) {
      Serial.println(recMes.getOSCAddress());     
      if ( strcmp( recMes.getOSCAddress() , "/bott") ) {

Grazie della risposta. Ho provato ad avviare la comunicazione seriale con Arduino ma non esce niente.
Come posso andare avanti??
Grazie ancora.

Nella setup() prova ad aggiungere:

Serial.println("avvio...");

subito dopo la Serial.begin

Ho provato ed esce "avvio..." nel monitor seriale.
Grazie ancora.

Quindi questo non è mai vero:

if  ( server.aviableCheck() ) {

Il server non riceve mai nulla. Purtroppo non conosco OSC. Sorry.

Probabilmente se il server non riceve nulla è a acusa dell'errata configurazione sullo smstphone.
Verifica che lo smartphone ed arduino siano connessi alla medesima rete.
Per esperienza sul progetto a cui ti sei ispirato i principali problemi riguardano la comunicazione network in casi come il tuo.