123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
-
- #include <Esplora.h>
- #include <OSCBundle.h>
- #include <SLIPEncodedUSBSerial.h>
- #if !defined(__AVR_ATmega32U4__)
- #error select Arduino Esplora in board menu
- #endif
- float getTemperature(){
- int result;
- ADMUX = _BV(REFS1) | _BV(REFS0) | _BV(MUX2) | _BV(MUX1) | _BV(MUX0);
- ADCSRB = _BV(MUX5);
- delayMicroseconds(200);
- ADCSRA |= _BV(ADSC);
- while (bit_is_set(ADCSRA,ADSC));
- result = ADCL;
- result |= ADCH<<8;
- analogReference(DEFAULT);
- return result/1023.0f;
- }
- float getSupplyVoltage(){
-
- int result;
-
- ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
- delayMicroseconds(300);
- ADCSRA |= _BV(ADSC);
- while (bit_is_set(ADCSRA,ADSC));
- result = ADCL;
- result |= ADCH<<8;
- float supplyvoltage = 1.1264f *1023 / result;
- return supplyvoltage;
- }
- void routeLed(OSCMessage &msg, int addrOffset ){
- if(msg.match("/red", addrOffset)) {
- if (msg.isInt(0)) Esplora.writeRed( (byte)msg.getInt(0));
- }
- else
- if(msg.match("/green", addrOffset)) {
- if (msg.isInt(0)) Esplora.writeGreen( (byte)msg.getInt(0));
- }
- else
- if(msg.match("/blue", addrOffset)) {
- if (msg.isInt(0)) Esplora.writeBlue( (byte)msg.getInt(0));
- }
- else
- if(msg.match("/rgb", addrOffset)) {
- if (msg.isInt(0)&&msg.isInt(1)&&msg.isInt(2))
- {
- Esplora.writeRGB((byte)msg.getInt(0),(byte)msg.getInt(1),(byte)msg.getInt(2));
- }
- }
- else
- {
- if (msg.isInt(0))
- {
- digitalWrite(13, msg.getInt(0)>0?HIGH:LOW);
- }
- }
- }
- void routeOut(OSCMessage &msg, int addrOffset ){
- if(msg.match("/B", addrOffset) || msg.match("/b", addrOffset)) {
- if (msg.isInt(0)) {
- pinMode(11,OUTPUT);
- digitalWrite(11, msg.getInt(0)>0?HIGH:LOW);
- }
- else
- pinMode(11,INPUT);
- }
- else
- if(msg.match("/A", addrOffset) ||msg.match("/a", addrOffset)) {
- if (msg.isInt(0)) {
- pinMode(3,OUTPUT);
- digitalWrite(3, msg.getInt(0)>0?HIGH:LOW);
- }
- else
- pinMode(3,INPUT);
- }
- }
- void routeTone(OSCMessage &msg, int addrOffset ){
- unsigned int frequency = 0;
- if (msg.isInt(0)){
- frequency = msg.getInt(0);
- }
- else if(msg.isFloat(0)){
- frequency = msg.getFloat(0);
- }
- else
- Esplora.noTone();
- if(frequency>0)
- {
- if(msg.isInt(1))
- Esplora.tone(frequency, msg.getInt(1));
- else
- Esplora.tone( frequency);
- }
- }
- const char *released = "released";
- const char *pressed = "pressed";
- SLIPEncodedUSBSerial SLIPSerial(Serial);
- const byte MUX_ADDR_PINS[] = {
- A0, A1, A2, A3 };
- const byte MUX_COM_PIN = A4;
- unsigned int myReadChannel(byte channel) {
- digitalWrite(MUX_ADDR_PINS[0], (channel & 1) ? HIGH : LOW);
- digitalWrite(MUX_ADDR_PINS[1], (channel & 2) ? HIGH : LOW);
- digitalWrite(MUX_ADDR_PINS[2], (channel & 4) ? HIGH : LOW);
- digitalWrite(MUX_ADDR_PINS[3], (channel & 8) ? HIGH : LOW);
- return analogRead(MUX_COM_PIN);
- }
- void setup() {
-
- SLIPSerial.begin(115200);
- while(!Serial)
- ;
- }
- int32_t counter = 0;
- int32_t serialnumber = 2;
- int32_t num_components = 3;
- void loop(){
- OSCBundle bndl;
- int32_t manifest_count = 1;
- if(!SLIPSerial.available())
- {
-
-
-
-
- #define RAW
- #ifdef RAW
- SLIPSerial.beginPacket();
- bndl.add("/mic").add((int32_t)Esplora.readMicrophone());
- bndl.add("/temp/sensor/celsius").add((int32_t)Esplora.readTemperature(DEGREES_C));
- bndl.add("/temp/sensor/fahrenheit").add((int32_t)Esplora.readTemperature(DEGREES_F));
- bndl.add("/linear/potentiometer").add((int32_t)Esplora.readSlider());
- bndl.add("/light/sensor").add((int32_t)Esplora.readLightSensor());
- bndl.add("/switch/1").add((int32_t)Esplora.readButton(SWITCH_1));
- bndl.add("/switch/2").add((int32_t)Esplora.readButton(SWITCH_2));
- bndl.add("/switch/3").add((int32_t)Esplora.readButton(SWITCH_3));
- bndl.add("/switch/4").add((int32_t)Esplora.readButton(SWITCH_4));
- bndl.add("/joystick/X").add((int32_t)Esplora.readJoystickX());
- bndl.add("/joystick/Y").add((int32_t)Esplora.readJoystickY());
- bndl.add("/joystick/switch").add((int32_t)Esplora.readJoystickSwitch());
- bndl.add("/joystick/switch/1").add((int32_t)Esplora.readButton(JOYSTICK_DOWN));
- bndl.add("/joystick/switch/2").add((int32_t)Esplora.readButton(JOYSTICK_LEFT));
- bndl.add("/joystick/switch/3").add((int32_t)Esplora.readButton(JOYSTICK_UP));
- bndl.add("/joystick/switch/4").add((int32_t)Esplora.readButton(JOYSTICK_RIGHT));
- bndl.add("/accelerometer/x").add(Esplora.readAccelerometer(X_AXIS));
- bndl.add("/accelerometer/y").add(Esplora.readAccelerometer(Y_AXIS));
- bndl.add("/accelerometer/z").add(Esplora.readAccelerometer(Z_AXIS));
- bndl.send(SLIPSerial);
- SLIPSerial.endPacket();
- bndl.empty();
- #endif
-
-
-
-
-
-
-
- SLIPSerial.beginPacket();
-
-
- bndl.add("/acceleration/x").add(Esplora.readAccelerometer(X_AXIS)/512.0f);
- bndl.add("/acceleration/y").add(Esplora.readAccelerometer(Y_AXIS)/512.0f);
- bndl.add("/acceleration/z").add(Esplora.readAccelerometer(Z_AXIS)/512.0f);
- bndl.add("/photoresistor").add(Esplora.readLightSensor()/1023.0f);
- bndl.add("/joystick/horizontal").add(-1.0 * (int32_t)Esplora.readJoystickX()/512.0f);
- bndl.add("/joystick/vertical").add(-1.0 * (int32_t)Esplora.readJoystickY()/512.0f);
- bndl.add("/joystick/button").add(Esplora.readJoystickSwitch()>0? released:pressed);
- bndl.add("/joystick/backward").add((int32_t)Esplora.readButton(JOYSTICK_DOWN)?released:pressed);
- bndl.add("/joystick/left").add((int32_t)Esplora.readButton(JOYSTICK_LEFT)?released:pressed);
- bndl.add("/joystick/forward").add((int32_t)Esplora.readButton(JOYSTICK_UP)?released:pressed);
- bndl.add("/joystick/right").add((int32_t)Esplora.readButton(JOYSTICK_RIGHT)?released:pressed);
- bndl.add("/serialnumber").add(serialnumber);
-
- bndl.send(SLIPSerial);
- SLIPSerial.endPacket();
- bndl.empty();
-
- bndl.add("/diamond/backward").add((int32_t)Esplora.readButton(SWITCH_1)?released:pressed);
- bndl.add("/diamond/left").add((int32_t)Esplora.readButton(SWITCH_2)?released:pressed);
- bndl.add("/diamond/forward").add((int32_t)Esplora.readButton(SWITCH_3)?released:pressed);
- bndl.add("/diamond/right").add((int32_t)Esplora.readButton(SWITCH_4)?released:pressed);
- bndl.add("/microphone/loudness").add(Esplora.readMicrophone()/1023.0f);
- bndl.add("/temperature/fahrenheit").add((float)Esplora.readTemperature(DEGREES_F));
- bndl.add("/temperature/celsius").add((float)Esplora.readTemperature(DEGREES_C));
- bndl.add("/slider/horizontal").add(1.0f - ((float)Esplora.readSlider()/1023.0f));
- bndl.add("/serialnumber").add(serialnumber);
-
- bndl.send(SLIPSerial);
- SLIPSerial.endPacket();
- bndl.empty();
-
-
- bndl.add("/connector/white/left").add(myReadChannel(CH_MIC +1)/1023.0);
- bndl.add("/connector/white/right").add(myReadChannel(CH_MIC +2)/1023.0);
- bndl.add("/led/red").add((int32_t)Esplora.readRed());
- bndl.add("/led/green").add((int32_t)Esplora.readGreen());
- bndl.add("/led/blue").add((int32_t)Esplora.readBlue());
- bndl.add("/led/rgb").add((int32_t)Esplora.readRed()).add((int32_t)Esplora.readGreen()).add((int32_t)Esplora.readBlue());
- bndl.add("/connector/orange/right").add((digitalRead(3)==HIGH)?1:0);
- bndl.add("/connector/orange/left").add((digitalRead(11)==HIGH)?1:0);
- bndl.add("/vendor").add("Arduino");
- bndl.add("/productname").add("Esplora");
- bndl.add("/serialnumber").add(serialnumber);
-
- bndl.send(SLIPSerial);
- SLIPSerial.endPacket();
- bndl.empty();
-
- counter += 1;
-
-
- }
- else
- {
- OSCBundle bundleIN;
- int size;
- while(!SLIPSerial.endofPacket())
- if ((size =SLIPSerial.available()) > 0)
- {
- while(size--)
- bundleIN.fill(SLIPSerial.read());
- }
- {
- if(!bundleIN.hasError())
- {
- bundleIN.route("/led", routeLed);
- bundleIN.route("/L", routeLed);
- bundleIN.route("/out", routeOut);
- bundleIN.route("/tone", routeTone);
- bundleIN.route("/squarewave", routeTone);
- bundleIN.route("/notone", routeTone);
- }
- }
- }
- }
|