«

»

Apr 09

Stampa Articolo

Arduino, OSC e iPhone

Vuoi regolare la luminosità di un led RGB dal tuo smartfone?

Ti parlo oggi di un protocollo di comunicazione chiamato OSC ( Open Sound Control , nasce infatti come applicazione nel campo musicale per consentire la comunicazione tra computer e sintetizzatori audio, attraverso una rete ethernet.

arduino ethernet per osc

Cosa ti occorre per realizzate questo progetto:

  • Arduino;
  • Ethernet shield;
  • Led RGB e relativa resistenza;
  • uno smartphone ( io ho usato il mio iPhone );
  • l’App TouchOSC o applicazione equivalete per il tuo smartphone;
  • l’applicazione TouchOSC Editor per costruire l’interfaccia lato iPhone;

Per le applicazioni TouchOSC puoi acquistare l’app sull’Apple Store e scaricare l’editor dal sito ufficiale http://hexler.net/software/touchosc quasi in fondo alla pagina c’è la sezione dedicata al download dell’Editor:

TouchOSC Editor download

Ho evidenziato in giallo la sezione del sito in cui trovi il download dell’editor per il sistema operativo che utilizzi.

Inizia a costruire la tua interfaccia grafica, l’editor ti permette di costruirla con i controlli che preferisci, per questo progetto utilizzerai solo gli slider verticali:

Sull’iPhone avrai già installato l’App TouchOSC e puoi quindi accettare la sincronizzazione dal computer via wifi:

Passa ora a collegare la ethernet shield su Arduino e a collegare il led in modo che il catodo comune sia collegato a massa (GND o terminale negativo) passando pre una resistenza da 470Ω, lo schema è simile a seguente:

Per lo sketch da caricare su Arduino devi procurarti la liberia OSCClass dal sito http://www.recotana.com, questa libreria ti serve per poter scrivere lo sketch senza preoccuparti di getsire la chimata con il protocollo OSC. La OSC Class ti mette a disposizioni diversi metodi per interrogare il tuo dispositivo o per ricevere da esso i comandi e renderteli disponibili.

Per capire come saranno interpretati i valori inseriti nell’interfaccia che hai realizzato è necessario che ricordi cosa hai impostato, nel campo OSC:

  • come path hai scritto /butt/pwmr (g o b);
  • come range hai assegnato valori da 0 a 255;

sono le due informazioni fondamentali, il path indica la struttura che arriverà ad arduino ogni volta che una comunicazione OSC viene stabilita tra il telefono e arduino, il range di valori indica come oscillerà il valore inviato da ogni slider.

Per consentirti di utilizzare le informazioni che arrivano via OSC la OSCClass ti mette a disposizione molti metodi tra cui:

getAddress(level): con level indichi a quale punto del path vuoi riferirti, es.: /butt/pwmr il livello 0 è butt il livello 1 pwmr; ti restituisce il valore letto nel livello indicato;

getAddressNum(): non ha parametri e ti restituisce il numero di livelli di cui è composto il path comunicato via OSC;

getArgNum(): non ha parametri e ti restituisce il numero di Argomenti ( valori ) che il messaggio contiene;

getTypeTag(arglevel): specificando un numero corrispondente all’argomento di cui vuoi il valore ti informa se il valore è di tipo “i” intero o “f” float, è particolarmente utile se non sai che tipo di valore ti sarà ritornato e vuoi interpretarlo prima di usarlo con arduino;

getArgInt(arg): recupera il valore intero di un argomento passatogli, è necessario che tu sia certo che il valore è di tipo intero altrimenti ti restituisce un intero che potrebbe non corrispondere al valore atteso;

getArgFloat(arg): è identico al metodo getArgInt(arg) ma si riferisce a valori di tipo float che puoi poi convertire con arduino.

Ed ecco lo sketck:

#include "Ethernet.h"
#include "OSCClass.h"
#include "SPI.h"

int pinLedR=3;
int pinLedG=5;
int pinLedB=6;

  OSCMessage recMes;

  OSCClass osc(&recMes);

  byte serverMac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  byte serverIp[]  = { 192, 168, 2, 99 };
  int  serverPort  = 10000;

  char *topAddress="butt";
  char *subAddress[3]={ "pwmr" , "pwmg" , "pwmb" };

void setup() {
     Serial.begin(19200);
     Ethernet.begin(serverMac ,serverIp);

     osc.begin(serverPort);

     pinMode(pinLedR, OUTPUT);
     pinMode(pinLedG, OUTPUT);
     pinMode(pinLedB, OUTPUT);

     digitalWrite(pinLedR, LOW);  //LED OFF
     digitalWrite(pinLedG, LOW);  //LED OFF
     digitalWrite(pinLedB, LOW);  //LED OFF

     osc.flush();
}

void loop() {
   if ( osc.available() ) {
      if( !strcmp( recMes.getAddress(0) , topAddress ) ){
         if( !strcmp(recMes.getAddress(1),subAddress[0]) ) {
            red();
         }
         else if( !strcmp(recMes.getAddress(1),subAddress[1]) ) {
            green();
         }
         else if( !strcmp(recMes.getAddress(1),subAddress[2]) ) {
            yellow();
         }
      }
  }
}

void red(){
   analogWrite(pinLedR, getIntValue(&recMes));
}

void green(){
   analogWrite(pinLedG, getIntValue(&recMes));
}

void yellow(){
   analogWrite(pinLedB, getIntValue(&recMes));
}

// *********  utility  ***********************************

int getIntValue(OSCMessage *mes){
    switch( mes->getTypeTag(0) ){
        case 'i': { return mes->getArgInt(0); }
        break;

        case 'f':  { return int(mes->getArgFloat(0)); }
        break;
      }
}

Ci sono alcune linee che si riferiscono solo alla comunicazione Ethernet, sono linee che avrai già incontrato in altri tutorial di questo sito: Tutorial Arduino Ethernet e SD Card.

Ecco le linee principali:

linee 01-03: includi le classi necessarie alla comunicazione Ethernet e OSC;

linea 09: costruisci un oggetto di tipo OSCMessage denominato recMes in cui saranno inseriti tutti i messaggi di comunicazione tra l’iPhone ed Arduino;

linea 11: inizializza la classe OSC;

linee 13-14: imposta Mac Address ed IP della tua lan in modo che arduino risponda su quell’IP;

linea 15: imposta una porta di comunicazione che serve alla classe OSC per ricevere i messaggi;

linee 17-18: definisci i tag del path che ti aspetti di ricevere nella comunicazione tra telefono ed Arduino, alla linea 17 impoti il path di livello 0 o topAddress; alla linea 18 imposta il path di livello 1 o subAdress come array di 3 valori uno per ogni slider;

Nella funzione di setup() le uniche righe nuove rispetto ai tutorial già letti sono la:

linea 24 in cui imposti la porta di comunicazione lato Arduino (serverPort);

linea 34: pulisce il buffer della classe OSC da precedenti messaggi;

La funzione loop() utilizza i metodi visti in alto per interpretare i path e i valori inviati via OSC e trasformarli in comandi per arduino ed il led RGB, in particolare:

linea 38: similmente a come avviene per le comunicazioni seriali l’if fa in modo che solo quando arriva un nuovo messaggio sia interpretato da Arduino;

linea 39: utilizza il comando strcmp() per confrontare il valore letto dal metodo recMes.getAddress(0) con quello impostato nella variabile topAddress alla linea 17, in caso di valore corrispondente continua l’elaborazione del messaggio OSC;

linee 40,43,46: sono identiche dal punto di vista sintattico a meno del valore di contronto, la linea 40 confronta il risultato del metodo recMes.getAddress(1) con il valore di subAddress[0], la 43 con subAddress[1] e la 46 con subAddress[2]; quando uno dei valori corrisponde a quello di confronto esegue la rispettiva funzione che ha azione sul led;

linee 53-55: definsci la funzione red() che agisce sul led di colore rosso, viene invocata dalla linea 41 quando il valore del livello 1 del path corrisponde a pwmr e invia al pin su cui è collegato il led rosso (pinLedR) il valore ricevuto dal telefono, per interpretare il valore ho costruito una funzione getIntValue(messaggio) che accetta in input il messaggio contenete tutta la comunicazione tra telefono ed arduino e ti restituisce il valore intero inviato;

linea 67: definisci la funzione getIntValue( messaggio ) come funzione di tipo integer in quanto il valore di ritorno sarà sempre un intero compreso tra 0 e 255;

linea 68: valuti con il comando switch ed il metodo  getTypeTag(0) se il valore contenuto nel messaggio è di tipo “i” o “f”;

linea 69: se è di tipo “i” è già un intero e lo restituisci recuperandolo con il metodo getIntArg(arg);

linea 72: se il valore è di tipo “f” ossia float dovrai convertirlo o in questo caso eseguire il cast ad intero in modo che possa essere passato alla funzione chiamante come intero, per recuperare questo tipo di valore utilizza il metodo getFloatArg(arg) in modo da ricavare correttamente il valore ed esegui un int() sul valore prima di restituirlo con il comando return.

Lo sketch è finito e puoi vedere il risultato in questo video:

Buona Pasquetta.

Permalink link a questo articolo: http://www.mauroalfieri.it/elettronica/arduino-osc-iphone.html

97 comments

1 ping

Vai al modulo dei commenti

  1. Matteo

    Ciao e complimenti per il blog! Una domanda; sai qual’è la portata massima di corrente su ogni uscita pwm? Vorrei usare arduino per controllare una strip led da 5 metri ma credo dovrò usare qualche transistor di potenza… La resistenza da 470 ohm và in serie sulla massa?

    1. Mauro Alfieri

      le uscite arduino possono gestire differenti potenze secondo il modello di scheda stesso, trovi le caratteristiche nel sito ufficiale alla sezione hardware.

      In media se non ricordo male è 40-50mA

      Mauro

    2. Mauro Alfieri

      Ho visto solo ora che la tua domanda riporta anche la richiesta di collegamento della resistenza, di solito va in serie, c’è da dire che una striscia di led da 5m, se del tipo che conosco io le resistenze le ha già xchè i led sono connessi a gruppi di 3 già con la resistenza.
      Per pilotare tale striscia hai certamente bisogno di qualche transistor di potenza, prova a cercare gli articoli sul lampadario a fibra ottica, ci sono un po di schemi che posso tornarti utili.
      Quando il progetto sarà ultimato mi piacerebbe pubblicarlo se ti va.

      Mauro

  2. YoDevil

    Ciao, bella guida,ma avrei qualche domandina da farti:
    Le porte del touchOSC devono essere 8000 in uscita e 9000 in entrata?
    L’ip e il Mac da dove li prendo? uso quelli che hai scritto tu?
    Non avendo iOS ma android non posso creare il mio layout quindi devo usare uno di quelli di default; basta che modifico il TopAddress e i SubAddres, o devo modificare anche qualcos’altro? Perchè ad esempio il range massimo su tutti i layout e su tutte le schede è 1… Spero che tu possa rispondere a tutte le mie domande 🙂

    1. Mauro Alfieri

      Ciao Alessandro,
      le porte puoi deciderle tu, la classe OSC di arduino di offre dei metodi per cambiarle, nell’articolo mi sembra di averlo scritto, se manca lo aggiungiamo o lo scrivo nel prossimo articolo sull’argomento.
      il Mac ( mac address ) solitamente è un numero univoco dato dal venditore della ethernet shield, prova a leggere tra tutti gli articoli sull’OSC nel Blog in qualche foto vedrai dove si trova l’etichetta, in ogni caso puoi usare anche quello che metto io, il mio, tanto le nostre due schede non condivideranno mai la stessa lan 🙂
      L’IP deve essere quello della tua rete, altrimenti non puoi controllarlo dal tuo telefono in WiFi.
      Non conosco l’app per Android se è simile a quella che utilizzo io dovresti poter fare tutte le modifiche che desideri, guarda il video su come costruisco l’interfaccia.
      Se non puoi modificare nulla nell’app allora devi modificare TopAddress e SubAddress nello sketch per adattarli al tuo path.
      Infine i valori con range massimo 1 mi fa dedurre che il tipo di interfaccia che utilizzi abbia solo pulsanti e non sliders, puoi scrivermi che app utilizzi?

      Mauro

      1. YoDevil

        Il mac dove lo trovo? Dov’è scritto?
        La porta che usi tu è 10000 in uscita sull’app del telefono? è quella a cui dai il valore integer all’inizio come serverPort? E il Serial da cosa è determinato?
        L’ip che dai alla riga 14 è l’ip del telefono?
        l’app che uso è la stessa ua: TouchOSC, solo che nella versione per android non si possono usare gli sketch creati da noi, gli sviluppatori dicono che stanno lavorando su questo fatto ma ancora niente… Posso solo scegliere i layout preconfigurati, ma ogni elemento (sia i bottoni, quelli circlari, le barre verticsli, orizzontali ecc) arrivano ad un massimo di 1, passando per tutti i numeri decimali(mi pare che siano 6 decimali)

        1. Mauro Alfieri

          Ciao Alessandro,
          Il Mac lo trovi su un adesivo solitamente presente sul retro della Ethernet Shield, leggi questo articolo: http://www.mauroalfieri.it/elettronica/tutorial-arduino-ethernet-e-pagine-multiple-su-sd-card.html

          Il comando Serial imposta la comunicazione seriale verso l’ide, serve come debug, se non sai cos’è ti invito a leggere gli articoli base nella sezione “corso arduino” prima di intraprendere un progetto con la Ethernet e smartphone, troverai tante info utili per i tuoi progetti.

          L’ip è quello che assegni al progetto ed a cui ti collegherai dallo smartphone e deve appartenere alla tua rete, quella a cui ti colleghi in wifi xchè i due si parlino.

          La porta che ho impostato io è 10000 e l’ho cambiata anche sull’interfaccia lato iPhone si riferisce alla porta di ricezione.

          Mauro

  3. YoDevil

    Grazie mille

  4. omar

    Ciao Mauro, compliemnti per la guida;
    io però ho riscontrato un paio di problemi 🙁
    Ho scaricato la libreria da recotana.com (ArdOSC ver2.1 for Arduino 1.0-rc1), o provato anche la versione prima
    Ho copiato il tuo codice, sketch, e mi da una lunga lista di errori; e non riesco a capire il perchè!
    Ho provato ad usare un’esempio per la scheda ethernet, e non da errori; se provo un’esempio per la OSCClass, sono allo stesso punto di prima. Non so più che altro fare, quindi ti chiedo un’aiuto, su cosa devo fare.

    Questa è la lista degli errori:

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    OSCClass\utility\w5100.cpp.o: In function `W5100Class::write(unsigned int, unsigned char)’:
    E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/w5100.cpp:130: multiple definition of `W5100Class::write(unsigned int, unsigned char)’
    Ethernet\utility\w5100.cpp.o:E:\Arduino\arduino-1.0.1\libraries\Ethernet\utility/w5100.cpp:130: first defined here
    OSCClass\utility\w5100.cpp.o: In function `W5100Class::write(unsigned int, unsigned char const*, unsigned int)’:
    E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/w5100.cpp:141: multiple definition of `W5100Class::write(unsigned int, unsigned char const*, unsigned int)’
    Ethernet\utility\w5100.cpp.o:E:\Arduino\arduino-1.0.1\libraries\Ethernet\utility/w5100.cpp:141: first defined here
    OSCClass\utility\w5100.cpp.o: In function `W5100Class::read(unsigned int)’:
    E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/w5100.cpp:156: multiple definition of `W5100Class::read(unsigned int)’
    Ethernet\utility\w5100.cpp.o:E:\Arduino\arduino-1.0.1\libraries\Ethernet\utility/w5100.cpp:156: first defined here
    OSCClass\utility\w5100.cpp.o: In function `W5100Class::send_data_processing_offset(unsigned char, unsigned int, unsigned char const*, unsigned int)’:
    E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/w5100.cpp:74: multiple definition of `W5100Class::send_data_processing_offset(unsigned char, unsigned int, unsigned char const*, unsigned int)’
    Ethernet\utility\w5100.cpp.o:E:\Arduino\arduino-1.0.1\libraries\Ethernet\utility/w5100.cpp:74: first defined here
    OSCClass\utility\w5100.cpp.o: In function `W5100Class::send_data_processing(unsigned char, unsigned char const*, unsigned int)’:
    E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/w5100.cpp:68: multiple definition of `W5100Class::send_data_processing(unsigned char, unsigned char const*, unsigned int)’
    Ethernet\utility\w5100.cpp.o:E:\Arduino\arduino-1.0.1\libraries\Ethernet\utility/w5100.cpp:68: first defined here
    OSCClass\utility\w5100.cpp.o: In function `W5100Class::getRXReceivedSize(unsigned char)’:
    E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/w5100.cpp:55: multiple definition of `W5100Class::getRXReceivedSize(unsigned char)’
    Ethernet\utility\w5100.cpp.o:E:\Arduino\arduino-1.0.1\libraries\Ethernet\utility/w5100.cpp:55: first defined here
    OSCClass\utility\w5100.cpp.o: In function `W5100Class::getTXFreeSize(unsigned char)’:
    E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/w5100.cpp:43: multiple definition of `W5100Class::getTXFreeSize(unsigned char)’
    Ethernet\utility\w5100.cpp.o:E:\Arduino\arduino-1.0.1\libraries\Ethernet\utility/w5100.cpp:43: first defined here
    OSCClass\utility\w5100.cpp.o: In function `W5100Class::read(unsigned int, unsigned char*, unsigned int)’:
    E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/w5100.cpp:167: multiple definition of `W5100Class::read(unsigned int, unsigned char*, unsigned int)’
    Ethernet\utility\w5100.cpp.o:E:\Arduino\arduino-1.0.1\libraries\Ethernet\utility/w5100.cpp:167: first defined here
    OSCClass\utility\w5100.cpp.o: In function `W5100Class::read_data(unsigned char, unsigned char volatile*, unsigned char volatile*, unsigned int)’:
    E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/w5100.cpp:109: multiple definition of `W5100Class::read_data(unsigned char, unsigned char volatile*, unsigned char volatile*, unsigned int)’
    Ethernet\utility\w5100.cpp.o:E:\Arduino\arduino-1.0.1\libraries\Ethernet\utility/w5100.cpp:109: first defined here
    OSCClass\utility\w5100.cpp.o: In function `W5100Class::recv_data_processing(unsigned char, unsigned char*, unsigned int, unsigned char)’:
    E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/w5100.cpp:97: multiple definition of `W5100Class::recv_data_processing(unsigned char, unsigned char*, unsigned int, unsigned char)’
    Ethernet\utility\w5100.cpp.o:E:\Arduino\arduino-1.0.1\libraries\Ethernet\utility/w5100.cpp:97: first defined here
    OSCClass\utility\w5100.cpp.o: In function `W5100Class::execCmdSn(unsigned char, SockCMD)’:
    E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/w5100.cpp:182: multiple definition of `W5100Class::execCmdSn(unsigned char, SockCMD)’
    Ethernet\utility\w5100.cpp.o:E:\Arduino\arduino-1.0.1\libraries\Ethernet\utility/w5100.cpp:182: first defined here
    OSCClass\utility\w5100.cpp.o: In function `W5100Class::init()’:
    E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/w5100.cpp:26: multiple definition of `W5100Class::init()’
    Ethernet\utility\w5100.cpp.o:E:\Arduino\arduino-1.0.1\libraries\Ethernet\utility/w5100.cpp:26: first defined here
    OSCClass\utility\w5100.cpp.o:E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/w5100.cpp:130: multiple definition of `W5100′
    Ethernet\utility\w5100.cpp.o:E:\Arduino\arduino-1.0.1\libraries\Ethernet\utility/w5100.cpp:130: first defined here
    SPI\SPI.cpp.o: In function `SPIClass::end()’:
    E:\Arduino\arduino-1.0.1\libraries\SPI/SPI.cpp:39: multiple definition of `SPIClass::end()’
    OSCClass\utility\SPI.cpp.o:E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/SPI.cpp:39: first defined here
    SPI\SPI.cpp.o: In function `SPIClass::setBitOrder(unsigned char)’:
    E:\Arduino\arduino-1.0.1\libraries\SPI/SPI.cpp:44: multiple definition of `SPIClass::setBitOrder(unsigned char)’
    OSCClass\utility\SPI.cpp.o:E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/SPI.cpp:44: first defined here
    SPI\SPI.cpp.o: In function `SPIClass::setDataMode(unsigned char)’:
    E:\Arduino\arduino-1.0.1\libraries\SPI/SPI.cpp:53: multiple definition of `SPIClass::setDataMode(unsigned char)’
    OSCClass\utility\SPI.cpp.o:E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/SPI.cpp:53: first defined here
    SPI\SPI.cpp.o: In function `SPIClass::setClockDivider(unsigned char)’:
    E:\Arduino\arduino-1.0.1\libraries\SPI/SPI.cpp:58: multiple definition of `SPIClass::setClockDivider(unsigned char)’
    OSCClass\utility\SPI.cpp.o:E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/SPI.cpp:58: first defined here
    SPI\SPI.cpp.o: In function `SPIClass::begin()’:
    E:\Arduino\arduino-1.0.1\libraries\SPI/SPI.cpp:23: multiple definition of `SPIClass::begin()’
    OSCClass\utility\SPI.cpp.o:E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/SPI.cpp:23: first defined here
    SPI\SPI.cpp.o:E:\Arduino\arduino-1.0.1\libraries\SPI/SPI.cpp:39: multiple definition of `SPI’
    OSCClass\utility\SPI.cpp.o:E:\Arduino\arduino-1.0.1\libraries\OSCClass\utility/SPI.cpp:39: first defined here
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    ti ringrazio della pazienza e dell’aiuto

    Omar

    1. Mauro Alfieri

      Ciao Omar,
      dal tipo di errore che leggo sembra un problema di compatibilità con l’IDE Arduino, prova la versione 1.0 al posto della rc1, non tutte le librerie sono compatibili con le ultime versioni dell’IDE.

      Mauro

  5. stefano

    Salve ho provato a realizzare questo progetto, quando compilo il programma e provo a caricarlo su Arduino, mi esce: OSCMessage was not decleared in this scope.
    Come posso fare ?
    Il programma è copiato dall’articolo solo che io uso 2 led invece di 3, mi può aiutare?

    Cordiali saluti
    Stefano

    1. Mauro Alfieri

      Ciao Stefano,
      il problema che mi segnali sembra dovuto al fatto che ti manca la classe OSC, l’hai caricata nelle librerie Arduino?

      Mauro

      1. stefano

        Non l’ho caricata come si fa ?
        stefano

        1. Mauro Alfieri

          Ciao Stefano,
          devi scaricarla dal web e copiarla nella directory libraries sotto arduino.
          Nel web trovi molti articoli di come si copia una libreria per Arduino.

          Mauro

          1. stefano

            CIAO
            una volta scaricata la libreria l’ho inserita dove hai detto e spero funzioni, adesso facci verifica e mi dice
            OSCClass does not able a type cosa vuol dire ? come posso fare ?
            cordiali saluti stefano

  6. Matteo

    Salve, l’indirizzo http://www.recotana.com non è più raggiungibile, da dove potrei scaricare le librerie OSC?
    Grazie mille

    1. Mauro Alfieri

      Ciao Matteo,
      cercando con Google “libreria OSC Arduino” ho trovato come 3° risultato questo:

      https://github.com/recotana/ArdOSC

      non ho avuto modo di provarlo ma penso funzioni essendo la medesima libreria scritta da recotana.
      Se la provi condividi con tutti gli appassionati i tuoi risultati.

      Mauro

  7. Macca

    ciao,
    è molto bello quello che fai ed è di molto di aiuto il tuo sito
    volevo chiederti un consiglio
    se volessi comandare arduino mega con il wifi come posso fare (non sono molto esperto ho appena iniziato
    a capire qualcosa di arduino)
    ti spiego:
    io mi connetto a internet dal cellulare o dal computer, mi connetto in rete e faccio accendere dei led ad arduino. arduino però è collegato al modem con il wifi .
    è possibile tutto ciò ‘?????
    ti ringrazio anticipatamnete
    se riesci rispondimi per email
    grazie
    macca

    1. Mauro Alfieri

      Ciao Macca,
      ti ho risposto anche via email, come mi hai richiesto, tuttavia mi piace condividere con gli appassionati i progetti di tutti.
      Questo articolo è quello che via email ti ho indicato come possibile strada da seguire.

      Mauro

  8. luca

    ciao mauro
    è da poco che uso arduino… ero interessato ad utilizzarlo per comandare dei punti luce in casa tramite cellulare, quindi dopo varie ricerche ho realizzato una tabella in html che abilitasse delle uscite. adesso è perennemente alimentato e connesso alla rete pero se lo lascio fermo un giorno senza fargli passare di stato qualche pin si blocca dicendo che la pagina html è inesistente e devo resettarlo manualmente o nelle peggiore delle ipotesi ricaricare il programma…
    data la tua esperienza hai qualche consiglio da darmi su come risolvere il problema???
    grazie

    1. Mauro Alfieri

      Ciao Luca,
      non mi è chiaro per cosa si a tabella HTML.
      Probabilmente l’anomalia è dovuta l codice che stai utilizzando.

      Senza postare tutto il codice prova a spiegarmi il flusso del tuo sketch.

      Mauro

  9. Andrea Macchieraldo

    Ho seguito il tutorial per arduino osc e iphone, tutto ok ma quando smetto di toccare lo schermo il fader rimane li dov’ero con il dito ma è come se venisse inviato un ultimo “colpo” che porta a 0 il valore e quindi il led mi si spegne.. non ho idea di come risolvere? Potresti aiutarmi?

    Grazie mille per la disponibilità!

    1. Mauro Alfieri

      Ciao Andrea,
      prova ad inserire nello sketch dei Serial.println() con i messaggi che riceve lo sketch e verifica che il programma di invio codici non invvi un reset dei segnali quando tu smetti di toccare il video.

      Mauro

  10. Leo45

    Ciao Mauro, io non sono molto esperto e ho notato questo tuo progetto e avrei due domande:

    -Io ho installato TouchOsc per un altro progetto, solo che quando invio il segnale dal computer al mio iPod, lo riceve, ma dall’iPod al computer non riceve niente. Sai cosa potrebbe essere?
    -Se facessi tutto quanto, senza utilizzare l’Ethernet shield, ci sarebbero dei problemi?

    spero di essermi espresso correttamente e che tu abbia capito le domande, grazie in anticipo

    1. Mauro Alfieri

      Ciao Leo,
      non ho mai usato software di connessione e riconoscimento dell’OSC su Pc/Mac.
      La Ethernet shield ti serve per comunicare con l’arduino, senza come pensi di farlo?

      Mauro

  11. paolo

    Ciao Mauro.
    Vorrei sapere come bisogna configurare l’applicazione OSC una volta che importiamo l’interfaccia creata con il PC.
    Infatti ci sono delle impostazioni da mettere sull applicazione come:

    HOST:__________
    Port(outgoing):8000
    Port(incoming):9000
    ZeroConf Name: Android

    Ecco a questo punto non so quali valori scrivere e quali cambiare…..
    in HOST: cosa ci vado a mettere?
    Le altre voci vanno gia bene così o vanno cambiate?

    1. Mauro Alfieri

      Ciao Paolo,
      trovi tutto nei tutorial dedicati all’OSC, prova a leggerli.
      In particolare l’hostname è l’IP assegnato ad Arduino e la porta dipende da cosa hai inserito nel codice Arduino.

      Mauro

  12. paolo

    Potrei sapere come faccio a sapere l’IP della scheda Ethernet? La devo impostare io dentro al codice? Per quanto riguarda il MAC della shield quella si trova stampata sotto la stessa…

    1. Mauro Alfieri

      Ciao Paolo,
      l’Ip della scheda lo imposti tu nello sketch, deve essere compatibile con la tua rete.

      Mauro

  13. pasquale

    ciao mauro usando il tuo sketck mi da questo errore
    su questa linea
    OSCClass osc(&recMes); non dichiarato in quale scopo.
    puoi aiutarmi?

    1. Mauro Alfieri

      Ciao Pasquale,
      ti manca la classe OSC che devi scaricare da un link presente nell’articolo é caricare in Arduino, trovi molti tutorial sul sito ufficiale arduino su come si installa una nuova classe.

      Mauro

  14. pasquale

    ciao mauro io ho scaricato la libreria che si chiama ardOSC MASTER che nello sketck: infatti si e colorata ma e il punto 11 che mi da l errore.

    1. Mauro Alfieri

      Ciao Pasquale,
      prova a mettere la classe nella stessa dir in cui hai lo sketch, é lí che la cerca.

      Mauro

  15. Pasquale

    Scusa Mauro non ho ben capito in che senso nella stessa dir

    1. Mauro Alfieri

      Ciao Pasquale,
      la libreria é composta da alcuni file che vanno copiati nella stessa cartella in cui salvi lo sketch.
      Oppure puoi seguire una delle guide su internet su come si installa una libreria Arduino.

      Mauro

  16. Marco

    Ciao mauro volevo sapere se osc è comandabile con una rete 3g e nn con la stessa rete wifi… Grazie

    1. Mauro Alfieri

      Ciao Marco,
      OSC é un protocollo di comunicazione, pertanto penso sia compatibile con la rete GPRS, pur non avendolo mai testato.
      Tuttavia ci sono due considerazioni che mi vengono in mente:
      1. devi verificare che le librerie non vadano in conflitto;
      2. se lo utilizzi come server, come in questo articolo, dovrai mantenere costantemente aperta la connessione 3G e questo potrebbe comportarti elevati costi di traffico.

      Mauro

  17. Marco

    Xke sempre aperta?

    1. Mauro Alfieri

      Ciao Marco,
      se arduino si comporta come un server deve rimanere sempre in ascolto, come fa un server web e questo comporta che la tua connessione debba restare attiva se vuoi ritrovarla con il client OSC che utilizzi.

      Mauro

  18. Marco

    Io intendevo dire, che arduino lo lascio collegato alla rete di casa e gestire il tutto con osc con la mia rete 3G

    1. Mauro Alfieri

      Ciao Marco,
      non mi era chiara questa tua volontà.
      In questo caso non ci sono differenze con il tutorial che ho scritto.

      Mauro

  19. Marco

    In pratica volevo sapere se x esempio prendo il tuo sketch con i sei Led,se potevo gestirlo anche fuori casa senza essere collegato al wifi ma utilizzando la rete del cell??

    1. Mauro Alfieri

      Ciao Marco,
      certo puoi farlo.
      Dovrai far in modo di sapere qual’è l’Ip con cui sei connesso da casa e impostare il router di casa per accettare tutte le connessioni provenienti su quell’IP e porta definite (es.: 8000 ) e dirigerle verso il tuo IP interno arduino.
      Per fare questo puoi informarti sui servizi di DNS dinamico e verificando quale fa al caso tuo e come puoi attivarlo sul tuo router di casa.

      Mauro

  20. Antonio

    Ciao Mauro, lo so, hai già avuto 1000 complimenti, ma credo ti faccia sempre piacere che qualcuno te li rinnovi… Complimenti!!! 😉

    A parte questo, ho provato in tutti i modi a far dialogare l’app TouchOSC 1.8 del Iphone con il mio arduino megaR3+Ethernet shieldR3 ma non ci sono riuscito.

    Sto utilizzando Arduino 1.0.5 e nella directory libraries ho messo sia ArdOSC che OSCClass.
    Ho provato a invertire le porte(10000-12000), cambiare ip (chiaramente sulla stessa classe), non ho errori nella compilazione, ho seguito il video passo passo per la creazione della grafica, ma non và!!!

    Ora sono ad un bivio perché sono giorni che provo e riprovo, o butto tutto dalla finestra oppure qualcuno di buon cuore mi illuminerà 😉

    Ti ringrazio anticipatamente.
    Antonio

    1. Mauro Alfieri

      Ciao Antonio,
      grazie per i complimenti.
      La Mega e la Uno non possiedono la medesima piedinatura per quanto riguarda l’ethernet shield.
      Le difficoltà che incontri potrebbero essere dovute proprio al fatto che hai collegato la shield Ethernet sulla MegaR3 come se si trattasse di una Uno, verifica sul sito arduino.cc i pin di connessione della Ethernet shield, quelli della uno é quelli della MegaR3 ed esegui prima un semplice test di funzionamento della parte Ethernet prima di passare a OSC.

      Mauro

      1. Antonio

        Ciao Mauro,
        dopo tanto ho capito il problema….
        Era la versione di OSC che avevo sul telefono!!! la 1.8 non inviava i dati in formato corretto, l’ho controllato con pd-extended.
        Ora funziona tutto alla pefezione!
        Mi chiedevo se fosse possibile inserire qualche bottone che facesse fare al led rgb dei giochi di luce, e una barra che ne regolasse la velocità dei giochi.
        Sarebbe carino anche avere una barra per regolare l’intensità della luce del led…
        Vabbe ora chiedo troppo, ma…

        Ho trovato questo Sketch che lavora al contrario, cioè legge i valori da arduino e li scrive su Osc… carino! Potrebbe servire per avere dei feedback da arduino, ma ho provato ad integrarlo con il tuo sketch ed è dura!!
        Ti ringrazio anticipatamente.
        Antonio


        *
        little example sketch for ArdOSC, pot, button & led
        based on ArdOSC example sketches.
        download ArdOSC Library: https://github.com/recotana/ArdOSC

        arduino converts pot & button values to osc messages.
        the led is mapped to the button state & its osc message.

        ______HOST SETTINGS______
        Pot Path = /1/Pot1
        Button Path = /1/button1
        LED Path = /1/led1 (helpfull for debuging)

        Connection setup:
        Host = myIp
        Host Port (outgoing) = serverport
        Host Port (incoming) = destPort
        _________________________
        created by Herr Paule
        more infos: http://www.irieelectronics.iriemovement.de

        */
        #include
        #include

        #include

        // pot section
        int PotValue = 0;
        int lastPotValue = 0;
        int pin0 = 0; // define variable for reading of pin0

        // button section
        int pushButton = 2 ;
        int pushButton_old = 0;

        // led section
        int ledPin = 9;
        int led = 0;
        byte myMac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
        byte myIp[] = { 192, 168, 0, 177 };
        int serverPort = 8000;
        int destPort = 10000; // set port for outgoing messages over udp
        byte destIp[] = { 192, 168, 0, 4 };

        OSCServer server;
        OSCClient client;

        OSCMessage global_mes; // create new osc message

        void setup(){

        Serial.begin(19200);
        Ethernet.begin(myMac ,myIp);
        server.begin(serverPort);

        //set callback function & oscaddress
        server.addCallback("/1/button1",&ledv);

        pinMode(ledPin, OUTPUT);
        pinMode(pushButton, INPUT);
        }

        void loop(){

        if(server.aviableCheck()>0){
        // Serial.println("alive! ");
        }

        sendPot();
        sendButton();

        }

        void sendPot() {

        PotValue = (analogRead(0))/8; // set PotValue to pin0 & pot value from 0 - 10253 to midi value range of 0 - 127

        if ( PotValue != lastPotValue ){

        global_mes.setAddress(destIp,destPort);

        global_mes.beginMessage("/1/rotary1"); // OSC Path
        global_mes.addArgInt32(PotValue);

        client.send(&global_mes);

        global_mes.flush(); // object data clear

        delay(1);

        lastPotValue = PotValue; // store old state as pot Value
        }
        }

        void sendButton() {

        int buttonState = digitalRead(pushButton);

        if (buttonState != pushButton_old){

        global_mes.setAddress(destIp,destPort);

        global_mes.beginMessage("/1/button1"); // OSC Path
        global_mes.addArgFloat(buttonState);

        client.send(&global_mes);

        global_mes.flush(); // object data clear

        delay(1);
        digitalWrite (ledPin, buttonState);

        pushButton_old = buttonState; // store old state as button state
        }
        }

        void ledv(OSCMessage *_mes){
        int led = _mes->getArgFloat(0);

        //create new osc message
        OSCMessage newMes;

        //set destination ip address & port no
        newMes.setAddress(_mes->getIpAddress(),destPort);
        newMes.beginMessage("/1/led1");

        if(led==0){
        led=0;
        digitalWrite(ledPin, LOW);
        }
        else{
        led=1;
        digitalWrite(ledPin, HIGH);
        }
        newMes.addArgInt32(led);

        //send osc message
        client.send(&newMes);

        }

        1. Mauro Alfieri

          Ciao Antonio,
          sono contento che tu abbia risolto il problema e lo sketch funzioni.

          Non comprendo cosa mi stai chiedendo, di svilupparsi qualcosa su commissione? O sono suggerimenti di ciò che realizzerai studiando gli sketch e integrandoli?

          Mauro

        2. Giovanni

          Ciao Mauro, seguo con interesse il tuo BLOG ed i tuoi video.
          Ho effettuato tutti i passaggi. Nessun errore. Eppure il led non parte. Mi accorgo che Arduino riceve i segnali perchè il led RX sulla Etherneth Shield si accende quando muovo il cursore su OSCTouch del mio iPhone.

          Forse c’è un errore nella forma dei messaggi ricevuti dall’iPhone? La mia versione di OSCTouch è la 1.9.3.

          Grazie
          Giovanni

          1. Mauro Alfieri

            Ciao Giovanni,
            potrebbero esserci delle differenze cambiando versione dell’App o della libreria OSC.
            Ti consiglio di usare il serial monitor per inserire dei messaggi di debug con cui comprendere cosa arriva ad arduino e come interpretarlo.

            Mauro

  21. Vito

    Ciao Mauro! Complimenti per il sito e per le interessantisime applicazioni, una vera miniera di informazioni per chi come me si è avvicinato solo da poco al mondo di Arduino. Bravo! Veniamo ora al problema. Dico subito che quando muovo i fader dal mio ipad le informazioni giungono alla scheda Ethernet correttamente, infatti i led RX e TX sulla Ethernet shield lampeggiano correttamente. Specifico che sto utilizzando un semplice led verde collegato tra il pin 3 digital e GND, ma nonostante ciò il led non si accende. Ho provato a mettere al massimo i 3 fader ma le uscite 3,5 e 6 risultano essere sempre a 0. Cosa può essere secondo te?

    info aggiuntive
    Arduino : UNO r3

    1. Mauro Alfieri

      Ciao Vito,
      potrebbe essere causato da molteplici fattori.
      I primi c’è mi vengono in mente sono:

      controllare i collegamenti dei 3 led
      aggiungi delle linee di debug per verificare che input arrivi
      controlla il path sull’app e sul programma

      Mauro

  22. Vito

    Ciao Mauro. Intanto grazie per le dritte. Mi sono state comunque utili. Ti dico che il problema è risolto. Ho estratto la scheda SD dall’allogiamento dell’Ethernet shield che, non so come, mi dava problemi, e su consiglio di mio nipote (!) ho modificato (lato iPad, TouchOSC) la Port(outgoing) a 10000 e la Port(incoming) a 8000. Il problema è che invertivo il valore delle porte. Ovviamente ho dovuto modificare lo sketch int serverPort = 10000;

    1. Mauro Alfieri

      Ottimo Vito,
      sono contento che tu abbia risolto.

      Mauro

  23. Marino

    Ciao io sto cercando di leggere valori di tipo ff cioè quelli inviati da una Multi-XY come faccio a convertirli in 2 variabili int una X e una Y cosa mi consigli??

    1. Mauro Alfieri

      Ciao Marino,
      puoi provare a lavorare con la logica Hex (esadecimale) e shift dei bit.
      Ho scritto un articolo in merito ai Led RGB e codice esadecimali che puoi provare a leggere.

      Mauro

  24. mauchi

    Ciao Mauro e complimenti per il tuo sito, stavo cercando l’uso di osc per un mio progetto, però vorrei ampliare questo fatto, ovvero vorrei che un sensore ad ultrasuoni MAX sonar mi calcolasse una distanza e la comunicasse via osc ad un software sul mac. pensi sia fattibile ?
    grazie e buon Lavoro
    Mauchi

    1. Mauro Alfieri

      Ciao Mauchi,
      il protocollo OSC é in grado sia di ricevere comandi sia di trasmettrli, quindi penso sia possibile realizzare quello e desideri.

      Cerca in internet le specifiche del protocollo e leggi la documentazione della classe Arduino per capire come fargli fare ciò che desideri.

      Mauro

  25. Antonio

    questo è il mio problema:

    In file included from CCleaner_lnk.ino:2:
    C:\Program Files\Arduino\libraries\OSCClass/OSCClass.h:70:27: error: utility/types.h: No such file or directory

    1. Mauro Alfieri

      Ciao Antonio,
      ti basta leggere quello che l’IDE ti dice: No such file or directory
      Non hai caricato il file OSCClass.h nel punto corretto o non lo hai proprio caricato 🙂

      Mauro

  26. Leo

    Ciao Mauro, sto provando a realizzare il progetto. Ho acquistato l’App OSC per Iphone e uso: IDE 1.0.5, la scheda ethernet ” W5200 Ethernet Shield ” ed ho installato l’editor OSC sul PC ma il/i LED non si accendono.
    Ho provato anche a inserire la libreria della scheda “EthernetV2_0.h” ma IDE non compila si blocca.
    Questo è il messaggio di errore -arduino-1.0.5-windows\arduino-1.0.5\libraries\OSCClass/OSCClass.h:71:27: error: utility/w5100.h: No such file or directory. ma nella DIR/Library c’è.

    Ti ringrazio per il tuo blog, ciao
    Leo

    1. Mauro Alfieri

      Ciao Leo, se leggi il messaggio attentamente vedrai che l’errore é nella mancanza della libreria w5100.h perché non l’hai caricata.

      1. Leo

        Ciao Mauro, quel messaggio lo dà quando carico la lib della scheda ethernet W5200, ossia, #include “EthernetV2:0.h” non riconosce più neanche la lib OSCClass.
        Non riesco a capire l’inghippo, ho rifatto tuto da capo 4 volte, ma niente.
        Leo

        1. Mauro Alfieri

          Ciao Leo,
          oltre all’include la libreria l’hai installata nell’IDE arduino?

          1. Leo

            Sì. ricapitoliamo:
            IDE 1.0.5 con molte librerie scaricate all’occorrenza
            OSC 1.6.0
            Processing 2.1.1
            Arduino UNO Rev3
            Shield Ethernet W5200
            IPhone 5 con OSC
            Ho letto tutto quello che hai pubblicato e all’occorrenza approfondisco un argomento ma questo con IPhone e ethernet mi sta facendo sbattere il cappello per terra.
            Leo

          2. Mauro Alfieri

            Ciao Leo,
            non mi è chiaro perchè se hai caricato la libreria W5200 ti dia errore sulla W5100, qualcosa ricerca quella libreria, forse la OSC.

  27. Leo

    Mi spiego meglio, carico il tuo sketch su IDE, lo compila e lo scarica su arduino, tutto ok, ma iphone non dialoga con la scheda ethernet e i led non si accendono. Allora penso che sia colpa della Library “Ethernet.h” la modifico con “EthernetV2_0.h” a questo punto non riconosce più neanche “OSCClass” dicendo che non lo trova. e questo è il messaggio: In file included from sketch_apr01a.ino:2:
    C:\Users\Dany\Documents\Elettronica\Arduino\Software\arduino-1.0.5-windows\arduino-1.0.5\libraries\OSCClass/OSCClass.h:71:27: error: utility/w5100.h: No such file or directory
    C:\Users\Dany\Documents\Elettronica\Arduino\Software\arduino-1.0.5-windows\arduino-1.0.5\libraries\OSCClass/OSCClass.h:72:28: error: utility/socket.h: No such file or directory
    C:\Users\Dany\Documents\Elettronica\Arduino\Software\arduino-1.0.5-windows\arduino-1.0.5\libraries\OSCClass/OSCClass.h:77:22: error: Ethernet.h: No such file or directory.
    Non capisco perché se prima trova tutto (con Ethernet.h) dopo con (EthernetV2_0.h) si rincretinisce.
    Rimetto le cose a posto ossia “Ethernet.h e ide non ha problemi e iphone è muto.

    1. Mauro Alfieri

      Ciao. Leo, semplicemente la v2_0 della Ethernet probabilmente non espone l’oggetto W5100 ed ecco l’errore segnalato dall’IDE.
      Per il malfunzionamento con la Ethernet.h ti consiglio di mettere dei Serial.print lungo il codice e verificare la connessione, la comunicazione e lo scambio dei pacchetti tra arduino ed iPhone.

  28. michele

    ciao,ho provato a seguire il tuot tutorial,
    tutto ok, niente errori di codice, ma non mi si accendono i led. come faccio con il monitor seriale a monitorare gli stadi dei led? non vedo nulla. e non capisco se l’indirizzo di rete settato è quello giusto.

    1. Mauro Alfieri

      Ciao Michele, per usare il monitor seriale devi attivarli lato codice e impostare la visualizzazione di tutte le linee di cui desideri conoscere il valore.

      Trovi degli articoli sul blog in cui ho descritto come impostare il monitor seriale per usarlo come debug.

  29. Mirko

    Salve mauro ho provato a realizzare il progetto per applicarlo ad una striscia led da 5m. Quando però procedo alla compilazione del programma mi da il seguente errore:

    In file included from sketch_nov07a.ino:2:
    C:\Program Files\Arduino\libraries\OSCClass/OSCCass.h:70:27: error:utility/types.h: No such fileor directory

    Sai dirmi cortesemente come posso risolverlo?
    Grazie mile

    1. Mauro Alfieri

      Ciao Mirko,
      sembra che la libreria che tu stai utilizzando richieda un file “types.h” che non hai.
      Prova a scaricarti una libreria aggiornata o completa di quel file.

  30. Damy

    Buongiorno Mauro,
    volevo chiederle se fattibile gestire due servi utilizzando un ipad tramite touchosc mi slego meglio.
    volevo avere la possibilità di collegare due servi in rete tramite arduino e con una applicazione poterli muovere e lasciando acceso solo arduino con ethernet shield?

    lo schema e semplicissimo i due servi sono collegati al pin 9, 10 di arduino.

    1. Mauro Alfieri

      Ciao Damiano,
      penso che non ci siano problemi a farlo.
      E’ più semplice di come ho mostrato per controllare un led RGB in quanto il servo RGB usa 3 canali OSC.

      1. Damy

        Salve Mauro,
        ma dove posso trovare delle spiegazioni oppure meglio un esempio per dei servi comandati da OSC?

        1. Mauro Alfieri

          Ciao Damiano,
          puoi leggere tutti i miei articoli sui servo e sull’OSC ed imparare a scrivere il tuo progetto.

  31. Franco

    Ciao Mauro. Il presente messaggio per farti i complimenti per le ottime informazioni. Sono poco esperto di arduino e quasi niente di elettronica. Sono molto appassionato di domotica “fai da te”. Grazie a persone come te, quelli come me possono entrare in tale mondo. Progetto eseguito e funzionante con successo. Grazie e continua così.
    Saluti. Franco

  32. davide.

    ciao mauro, complimenti per il tuo progetto. volevo chiederti, ho provato a copiare il tuo sketch per imparare a capire qualcosa riguardo la comunicazione tra iphone e arduino, ma mi escono questi errori:

    sketch_apr05a.ino:2:22: error: OSCClass.h: No such file or directory
    sketch_apr05a:8: error: ‘OSCMessage’ was not declared in this scope

    ho seguito il tutorial per creare l’ interfaccia osc e ci sono riuscito, ma nello sketch niente. se puoi aiutarmi a risolvere questi errori ne sarei felicie, grazie.

    1. Mauro Alfieri

      Ciao Davide,
      come spesso ho scritto l’errore si trova nelle prime righe in arancio che l’IDE ti restituisce.
      Nel tuo caso è la mancanza della libreria OSCClass.h, hai caricato la libreria nell’IDE arduino come descritto nell’articolo?

  33. Rossano marano

    Per caso è possibile usare touchosc con arduino collegato al telefono tramite Bluetooth ?

    1. Mauro Alfieri

      Ciao Rossano,
      che io sappia no !!
      Puoi verificare sul sito del produttore se hanno aggiunto questa possibilità.

  34. rossano

    Provando il tuo sketch mi dà questo errore:
    In file included from sketch_apr30a.ino:2:0:
    C:\Program Files (x86)\Arduino\libraries\OSCClass/OSCClass.h:71:27: fatal error: utility/w5100.h: No such file or directory
    #include “utility/w5100.h”
    ^
    compilation terminated.
    Errore durante la compilazione

    Questo errore è legato alla libreria “oscclass”?
    io l’ho scaricata da questo sito: http://recotana.com/recotanablog/closet

    1. Mauro Alfieri

      Ciao Rossano,
      ti manca una parte della libreria, quella relativa al w5100 che è il chip usato dalla componente Ethernet

  35. rossano

    La trovo allo stesso indirizzo?
    Grazie gentilissimo

    1. Mauro Alfieri

      Ciao Rossano,
      penso tu possa cercarla in internet qualora non la trovassi nel medesimo link.

  36. Andrea

    Salve, ho dei problemi con il funzionamento di questo progetto: dopo aver collegato la mia Ethernet Shield a Internet e copiato il programma sostituendo l’indirizzo Mac e quello IP, e dopo aver creato la mia app con OSC e sincronizzandola con il mio dispositivo iOS, caricando il programma il Led RGB non si accende nemmeno (il montaggio del circuito è giusto perchè ho fatto una prova con un normale programma per accendere un led RGB e funziona). Ci sono altre cose che devo fare? Dati che mancano o istruzioni da mettere? Devo sostituire qualcos’altro dal tuo programma o solo i due indirizzi?
    Inoltre mi esce un messaggio di errore, che non penso influisca sul caricamento del programma sulla scheda (siccome il caricamento lo completa lo stesso) che dice:
    warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    Grazie dell’aiuto.
    Andrea.

    1. Mauro Alfieri

      Ciao Andrea,
      hai verificato con il monitor seriale che i messaggi inviati dall’app arrivino in modo corretto all’arduino?

      1. Andrea

        Ho Verificato ma non appare nulla, mi è venuto in mente che potrebbe essere un problema con la Ethernet, c’è qualche tutorial che hai fatto sulla configurazione della Ethernet?
        Inoltre adesso riscontro anche problemi con il collegamento della app sul mio iPod, il mio dispositivo pur essendo connesso alla stessa wi-fi del pc non trova il mio pc e il mio layout.
        Avevo poi inoltre una domanda generale: se il pc e l’iPod potevano avere la stessa connessione ma una cablata e l’altra via wi-fi?
        Grazie mille.

        1. Mauro Alfieri

          Ciao Andrea,
          tutorial ne ho scritti molti, puoi trovarli nel blog.
          Si un Pc ed un Ipod possono condividere la medesima rete se configuri appropriatamente il router a cui sono collegati, dovresti trovare in rete molto materiale sulla configurazione dei router.

  37. Alessio

    Ciao Mauro,
    complimenti per tutte le guide su Arduino che fai, sono molto interessanti e danno un ottimo input per nuove idee. Mi sono interessato da poco al collegamento internet con la scheda arduino e volevo replicare questo progetto per poi modificarlo in futuro magari, ma ho un problema la classe OSC non avendola istallata non mi è riconosciuta dall’arduino come giusto che sia, ma non riesco a trovare un link da dove scaricarla, mi potresti consigliare un download facile e sicuro??
    Grazie mille in anticipo.

    1. Mauro Alfieri

      Ciao Alessio,
      hai verificato con il library manager ( “gestore librerie” in italiano ) la presenza di librerie aggiornate?

      1. Alessio

        Si ho guardato, ma cercando “oscclass”, “osc class” o “classe osc” non ho trovato nulla; ho provato dal link che hai inserito ma anche li non mi carica più la pagina, non so come fare; non so se possibile inviare la libreria tramite email o non so. Spero di trovare una soluzione. Ti ringrazio ancora una volta in anticipo!

        1. Alessio

          ok forse ho trovato qualcosa ma lo devo ancora testare, per ora ho provato a verificare il programma e mi riscontra un errore, non vorrei che sia causato dal mancato collegamento con la scheda Arduino (cosa molto probabile secondo me) ma appena potrò testerò il tuo programma su arduino uno con ethernet shield. Ti farò risapere grazie della disponibilità

          1. Mauro Alfieri

            Ciao Alessio,
            dipende dal tipo di errore che ricevi. se cerchi di trasferirlo ad arduino e non c’è la scheda è normale che ti restituisce errore.
            Usa solo il primo pulsante dell’IDE che esegue una verifica sintattica ma non cerca di eseguire l’upload

        2. Mauro Alfieri

          Ciao Alessio,
          ho eseguito una rapida ricerca e trovato una libreria che mi sembra valida: cercala solo come OSC o Open Sound Control

          1. Alessio

            Ti ringrazio mille per le informazioni, e in effetti la testavo solo con arduino. Ora controllerò appena possibile la libreria da te indicata, e spero di darti presto buoni risultati, in quanto sono sotto esami e non so dove trovare il tempo. Grazie mille della disponibilità per ora.

          2. Alessio

            Ciao Mauro,
            forse ho trovato la libreria che mi dicevi, per caso è qualcosa di simile ad ArdOSC??
            Ora la scarico e appena finito con questi esami di stato mi metto giù a studiarla e provarla.
            Grazie per la disponibilità

          3. Mauro Alfieri

            Ottimo Alessio, condividi poi l’esito dei test.

  1. Mauro Alfieri » Blog Archive » Arduino, OSC, iPhone e sei led

    […] protocollo OSC e quello che si può fare con arduino lo hai già letto nell’articolo Arduino, OSC e iPhone su questo blog, oggi ti mostro come realizzare un piccolo impianto domotico a 6 luci comandato da […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>