c2-utopia/lib/OSC/examples/UDPSendBundle/UDPSendBundle.ino

56 lines
1.6 KiB
Arduino
Raw Normal View History

/*
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 <Ethernet.h>
#include <EthernetUdp.h>
#include <SPI.h>
#include <OSCBundle.h>
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);
}