/* * WIRELESS CONTROL FOR GUITAR - RECEIVER * * Converts messages coming from a Xbee serial link to OSC, * and sends them through the Ethernet port. * * Hardware needed (receiver): Arduino w. Ethernet Shield and Xbee shield * Libraries used: * - Ethernet.h * - ArdOSC.h (By Recotana, http://recotana.com/recotanablog/?page_id=222) * - Messenger.h (By Thomas Ouellet Fredericks, * http://www.arduino.cc/playground/Code/Messenger) * * 2010 JP Carrascal. http://www.jpcarrascal.com * */ // For OSC: #include #include #include #define MAXSIZE 3 Messenger message = Messenger(); char serial_string[MAXSIZE]; byte myMac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte myIp[] = { 192, 168, 2, 3 }; byte destIp[] = { 192, 168, 2, 2 }; int destPort = 4444; char accAdr[] = "/guit/acc"; char btaAdr[] = "/guit/bta"; char btbAdr[] = "/guit/btb"; char ccaAdr[] = "/guit/cca"; char ccbAdr[] = "/guit/ccb"; OSCClient client; float accx,accy,accz,bta,btb,cca,ccb; //int ledPin = 13; void setup() { Serial.begin(57600); Ethernet.begin(myMac ,myIp); message.attach(messageCompleted); //pinMode(13,OUTPUT); } void messageCompleted() { while (message.available()) { if (message.checkString("acc")) { accx = message.readInt(); accy = message.readInt(); accz = message.readInt(); acc_send(accx,accy,accz); } else if (message.checkString("cca")) { cca = message.readInt(); cca_send(cca); } else if (message.checkString("ccb")) { ccb = message.readInt(); ccb_send(ccb); } else if (message.checkString("bta")) { bta = message.readInt(); bta_send(bta); } else if (message.checkString("btb")) { btb = message.readInt(); btb_send(btb); } else int temp = message.readInt(); } } void loop() { while ( Serial.available() ) message.process( Serial.read() ); } void acc_send(float ax, float ay, float az) { OSCMessage accMes; accMes.setAddress(destIp,destPort); accMes.setOSCMessage(accAdr,"fff",&ax,&ay,&az); client.send(&accMes); accMes.flush(); } void cca_send(float ca) { OSCMessage ccaMes; ccaMes.setAddress(destIp,destPort); ccaMes.setOSCMessage(ccaAdr,"f",&ca); client.send(&ccaMes); ccaMes.flush(); } void ccb_send(float cb) { OSCMessage ccbMes; ccbMes.setAddress(destIp,destPort); ccbMes.setOSCMessage(ccbAdr,"f",&cb); client.send(&ccbMes); ccbMes.flush(); } void bta_send(float ba) { OSCMessage btaMes; btaMes.setAddress(destIp,destPort); btaMes.setOSCMessage(btaAdr,"f",&ba); client.send(&btaMes); btaMes.flush(); } void btb_send(float bb) { OSCMessage btbMes; btbMes.setAddress(destIp,destPort); btbMes.setOSCMessage(btbAdr,"f",&bb); client.send(&btbMes); btbMes.flush(); }