56 lines
1.6 KiB
C++
56 lines
1.6 KiB
C++
|
|
/*
|
|
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);
|
|
}
|