/* * Set the LED according to incoming OSC control */ #include #include #ifdef BOARD_HAS_USB_SERIAL #include SLIPEncodedUSBSerial SLIPSerial( thisBoardsSerialUSB ); #else #include SLIPEncodedSerial SLIPSerial(Serial1); #endif void LEDcontrol(OSCMessage &msg) { if (msg.isInt(0)) { pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, (msg.getInt(0) > 0)? HIGH: LOW); } else if(msg.isString(0)) { int length=msg.getDataLength(0); if(length<5) { char str[length]; msg.getString(0,str,length); if((strcmp("on", str)==0)|| (strcmp("On",str)==0)) { pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); } else if((strcmp("Of", str)==0)|| (strcmp("off",str)==0)) { pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, LOW); } } } } void setup() { SLIPSerial.begin(9600); // set this as high as you can reliably run on your platform #if ARDUINO >= 100 while(!Serial) ; // Leonardo bug #endif } //reads and dispatches the incoming message void loop(){ OSCBundle bundleIN; int size; while(!SLIPSerial.endofPacket()) if( (size =SLIPSerial.available()) > 0) { while(size--) bundleIN.fill(SLIPSerial.read()); } if(!bundleIN.hasError()) bundleIN.dispatch("/led", LEDcontrol); }