Wifi Shield réception de données par UDP

Salut à tous,

J'ai un iPhone connecté en Wifi à un routeur, et un Arduino aussi via un WiFi Shield. L'iPhone envoi des informations concernant la valeur d'un slider à partir de l'application touchOSC (donc via le protocole OSC) au Arduino qui reçoit (ou du moins devrait) via le protocole UDP. Voilà ce qui est retourné à l'écran :

Contents: /1/fader1/

Avec le code suivant :

    // read the packet into packetBufffer
    int len = Udp.read(packetBuffer,20);
    if (len >0) packetBuffer[len]=0;
    Serial.println("Contents:");
    Serial.println(packetBuffer);

Mon problème est que le Arduino reçoit bien une information de l'iphone, mais je ne sais pas comment récupérer la valeur que le slider envoi au Arduino, qui doit se trouver après /1/fader1/

Merci d'avance !

Benjamin

Help :(

bonjour, tu as jeté un oeil par là? https://www.sparkfun.com/tutorials/152 http://samratamin.com/Ardumote_Tutorial.html

Merci pour ta réponse

Non je n’avais pas vu ces exemples, mais j’ai fais des essais avec le code qui est inclue, et je n’arrive toujours pas à afficher sur l’écran la valeur du slider qui est reçu par le Arduino (censé être comprise en -8 et 8).

Voilà le code complet :

/*
  WiFi UDP Send and Receive String
 
 This sketch wait an UDP packet on localPort using a WiFi shield.
 When a packet is received an Acknowledge packet is sent to the client on port remotePort
 
 Circuit:
 * WiFi shield attached
 
 created 30 December 2012
 by dlf (Metodo2 srl)

 */

//la libraire WiFiUdp est dispo dans le repo github arduino ainsi que des examples
#include <SPI.h>
#include <WiFi.h>
#include <WiFiUdp.h>

int status = WL_IDLE_STATUS;
char ssid[] = "Ouai"; //  your network SSID (name) 
char pass[] = "123654789";    // your network password (use for WPA, or use as key for WEP)
int keyIndex = 0;            // your network key Index number (needed only for WEP)

unsigned int localPort = 2390;      // local port to listen on


char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet
char  ReplyBuffer[] = "acknowledged";       // a string to send back

WiFiUDP Udp;

void setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(9600); 
  pinMode(4, OUTPUT);
  
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
  
  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present"); 
    // don't continue:
    while(true);
  } 
  
  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) { 
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:    
    status = WiFi.begin(ssid, pass);
  
    // wait 10 seconds for connection:
    delay(10000);
  } 
  Serial.println("Connected to wifi");
  printWifiStatus();
  
  Serial.println("\nStarting connection to server...");
  // if you get a connection, report back via serial:
  Udp.begin(localPort);  
}

void loop() {
    
  // if there's data available, read a packet
  int packetSize = Udp.parsePacket();
  if(packetSize)
  {   
    digitalWrite(4, HIGH);
    Serial.print("Received packet of size ");
    Serial.println(packetSize);
    Serial.print("From ");
    IPAddress remoteIp = Udp.remoteIP();
    Serial.print(remoteIp);
    Serial.print(", port ");
    Serial.println(Udp.remotePort());
    memset(packetBuffer, 0, UDP_TX_PACKET_MAX_SIZE);
    // read the packet into packetBufffer
    int len = Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);    
    if (len >0) packetBuffer[len]=0;
    Serial.println("Contents:");
    Serial.println(packetBuffer);
      
    // send a reply, to the IP address and port that sent us the packet we received
    Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
    Udp.write(ReplyBuffer);
    Udp.endPacket();
    
    digitalWrite(4, LOW);
   }
}


void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}

 /*   void receive(byte[] data) 
    { // <-- default handler
    //void receive( byte[] data, String ip, int port ) {	// <-- extended handler

    for(int i=0; i < data.length; i++)
    Serial.print(char(data[i]));
    Serial.println();
    }*/