/* Make an OSC bundle and send it over UDP OSCBundles allow OSCMessages to be grouped together to preserve the order and completeness of related messages. They also allow for timetags to be carried to represent the presentation time of the messages. */ #include #include #include #include EthernetUDP Udp; //the Arduino's IP IPAddress ip(128, 32, 122, 252); //destination IP IPAddress outIp(128, 32, 122, 125); const unsigned int outPort = 9999; byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // you can find this written on the board of some Arduino Ethernets or shields void setup() { Ethernet.begin(mac,ip); Udp.begin(8888); } void loop(){ //declare the bundle OSCBundle bndl; //BOSCBundle's add' returns the OSCMessage so the message's 'add' can be composed together bndl.add("/analog/0").add((int32_t)analogRead(0)); bndl.add("/analog/1").add((int32_t)analogRead(1)); bndl.add("/digital/5").add((digitalRead(5)==HIGH)?"HIGH":"LOW"); Udp.beginPacket(outIp, outPort); bndl.send(Udp); // send the bytes to the SLIP stream Udp.endPacket(); // mark the end of the OSC Packet bndl.empty(); // empty the bundle to free room for a new one bndl.add("/mouse/step").add((int32_t)analogRead(0)).add((int32_t)analogRead(1)); bndl.add("/units").add("pixels"); Udp.beginPacket(outIp, outPort); bndl.send(Udp); // send the bytes to the SLIP stream Udp.endPacket(); // mark the end of the OSC Packet bndl.empty(); // empty the bundle to free room for a new one delay(1000); }