From 92ebdea8393f8c8b3295b660423135874ecf3f13 Mon Sep 17 00:00:00 2001 From: Dslak Date: Fri, 15 Nov 2019 10:08:49 +0100 Subject: [PATCH 1/2] add OSC receive --- .gitignore | 8 ++ Conf/MovedulationJ7.json | 175 +++++++++++++++++++++++++++ Processing/OSCReceive/OSC.pde | 96 +++++++++++++++ Processing/OSCReceive/OSCReceive.pde | 43 +++++++ 4 files changed, 322 insertions(+) create mode 100644 .gitignore create mode 100644 Conf/MovedulationJ7.json create mode 100644 Processing/OSCReceive/OSC.pde create mode 100644 Processing/OSCReceive/OSCReceive.pde diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..38c0e69 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ + +Processing/OSCReceive/application\.linux-arm64/ + +Processing/OSCReceive/application\.linux-armv6hf/ + +Processing/OSCReceive/application\.linux32/ + +Processing/OSCReceive/application\.linux64/ diff --git a/Conf/MovedulationJ7.json b/Conf/MovedulationJ7.json new file mode 100644 index 0000000..0f8001a --- /dev/null +++ b/Conf/MovedulationJ7.json @@ -0,0 +1,175 @@ +{ +contents: [ +{ + type:"hslider", + cursorFillColor: [255, 0, 0], + defaultFillColor: [20, 0, 0], + borderColor: [155, 0, 0], + height: 120, + slidedFillColor: [100, 0, 0], + width: 480, + rect: [304, 826, 784, 946], + maxValue: 255.0, + minValue: 0.0, + OSCValueChanged: "/lx $1" +}, +{ + type:"vslider", + cursorFillColor: [255, 0, 0], + defaultFillColor: [20, 0, 0], + borderColor: [255, 0, 0], + height: 480, + slidedFillColor: [100, 0, 0], + width: 120, + rect: [165, 320, 285, 800], + maxValue: 255.0, + minValue: 0.0, + OSCValueChanged: "/ly $1" +}, +{ + type:"vslider", + cursorFillColor: [255, 0, 0], + defaultFillColor: [20, 0, 0], + borderColor: [255, 0, 0], + height: 480, + slidedFillColor: [100, 0, 0], + width: 120, + rect: [1662, 314, 1782, 794], + maxValue: 255.0, + minValue: 0.0, + OSCValueChanged: "/ry $1" +}, +{ + type:"hslider", + cursorFillColor: [255, 0, 0], + defaultFillColor: [20, 0, 0], + borderColor: [155, 0, 0], + height: 120, + slidedFillColor: [100, 0, 0], + width: 480, + rect: [1156, 827, 1636, 947], + maxValue: 255.0, + minValue: 0.0, + OSCValueChanged: "/rx $1" +}, +{ + type:"toggle", + defaultFillColor: [20, 0, 0], + defaultText: "1", + fontColor: [255, 255, 255], + borderColor: [250, 0, 0], + height: 150, + toggledFillColor: [250, 0, 0], + toggledText: "1", + width: 150, + rect: [406, 320, 556, 470], + oscToggleOn: "/lt1 1", + oscToggleOff: "/lt1 0", + fireOSCOnToggleOff: "true" +}, +{ + type:"toggle", + defaultFillColor: [20, 0, 0], + defaultText: "2", + fontColor: [255, 255, 255], + borderColor: [250, 0, 0], + height: 150, + toggledFillColor: [250, 0, 0], + toggledText: "2", + width: 150, + rect: [628, 321, 778, 471], + oscToggleOn: "/lt2 1", + oscToggleOff: "/lt2 0", + fireOSCOnToggleOff: "true" +}, +{ + type:"toggle", + defaultFillColor: [20, 0, 0], + defaultText: "3", + fontColor: [255, 255, 255], + borderColor: [250, 0, 0], + height: 150, + toggledFillColor: [250, 0, 0], + toggledText: "3", + width: 150, + rect: [405, 584, 555, 734], + oscToggleOn: "/lt3 1", + oscToggleOff: "/lt3 0", + fireOSCOnToggleOff: "true" +}, +{ + type:"toggle", + defaultFillColor: [20, 0, 0], + defaultText: "4", + fontColor: [255, 255, 255], + borderColor: [250, 0, 0], + height: 150, + toggledFillColor: [250, 0, 0], + toggledText: "4", + width: 150, + rect: [625, 579, 775, 729], + oscToggleOn: "/lt4 1", + oscToggleOff: "/lt4 0", + fireOSCOnToggleOff: "true" +}, +{ + type:"toggle", + defaultFillColor: [20, 0, 0], + defaultText: "1", + fontColor: [255, 255, 255], + borderColor: [250, 0, 0], + height: 150, + toggledFillColor: [250, 0, 0], + toggledText: "1", + width: 150, + rect: [1159, 322, 1309, 472], + oscToggleOn: "/rt1 1", + oscToggleOff: "/rt1 0", + fireOSCOnToggleOff: "true" +}, +{ + type:"toggle", + defaultFillColor: [20, 0, 0], + defaultText: "2", + fontColor: [255, 255, 255], + borderColor: [250, 0, 0], + height: 150, + toggledFillColor: [250, 0, 0], + toggledText: "2", + width: 150, + rect: [1415, 320, 1565, 470], + oscToggleOn: "/rt2 1", + oscToggleOff: "/rt2 0", + fireOSCOnToggleOff: "true" +}, +{ + type:"toggle", + defaultFillColor: [20, 0, 0], + defaultText: "3", + fontColor: [255, 255, 255], + borderColor: [250, 0, 0], + height: 150, + toggledFillColor: [250, 0, 0], + toggledText: "3", + width: 150, + rect: [1162, 580, 1312, 730], + oscToggleOn: "/rt3 1", + oscToggleOff: "/rt3 0", + fireOSCOnToggleOff: "true" +}, +{ + type:"toggle", + defaultFillColor: [20, 0, 0], + defaultText: "4", + fontColor: [255, 255, 255], + borderColor: [250, 0, 0], + height: 150, + toggledFillColor: [250, 0, 0], + toggledText: "4", + width: 150, + rect: [1410, 581, 1560, 731], + oscToggleOn: "/rt4 1", + oscToggleOff: "/rt4 0", + fireOSCOnToggleOff: "true" +} +]} \ No newline at end of file diff --git a/Processing/OSCReceive/OSC.pde b/Processing/OSCReceive/OSC.pde new file mode 100644 index 0000000..33ec6a3 --- /dev/null +++ b/Processing/OSCReceive/OSC.pde @@ -0,0 +1,96 @@ +int[] OSCleftToggle = {0,0,0,0}; +int OSCleftToggleActive = 0; +int[] OSCrightToggle = {0,0,0,0}; +int OSCrightToggleActive = 0; +float OSCleftX = 0; +float OSCleftY = 0; +float OSCrightX = 0; +float OSCrightY = 0; +float OSCvalue = 0; + +void oscEvent(OscMessage theOscMessage) { + + if(theOscMessage.checkTypetag("s")){ + OSCvalue = parseFloat(theOscMessage.get(0).toString().replaceAll(",",".")); + } + + switch(theOscMessage.addrPattern()) { + case "/lt1": + OSCleftToggle[0] = theOscMessage.get(0).intValue(); + if(OSCleftToggle[0] == 1) {OSCleftToggleActive = 1;} + break; + case "/lt2": + OSCleftToggle[1] = theOscMessage.get(0).intValue(); + if(OSCleftToggle[1] == 1) {OSCleftToggleActive = 2;} + break; + case "/lt3": + OSCleftToggle[2] = theOscMessage.get(0).intValue(); + if(OSCleftToggle[2] == 1) {OSCleftToggleActive = 3;} + break; + case "/lt4": + OSCleftToggle[3] = theOscMessage.get(0).intValue(); + if(OSCleftToggle[3] == 1) {OSCleftToggleActive = 4;} + break; + case "/lx": + OSCleftX = OSCvalue; + break; + case "/ly": + OSCleftY = OSCvalue; + break; + + case "/rt1": + OSCrightToggle[0] = theOscMessage.get(0).intValue(); + if(OSCrightToggle[0] == 1) {OSCrightToggleActive = 1;} + break; + case "/rt2": + OSCrightToggle[1] = theOscMessage.get(0).intValue(); + if(OSCrightToggle[1] == 1) {OSCrightToggleActive = 2;} + break; + case "/rt3": + OSCrightToggle[2] = theOscMessage.get(0).intValue(); + if(OSCrightToggle[2] == 1) {OSCrightToggleActive = 3;} + break; + case "/rt4": + OSCrightToggle[3] = theOscMessage.get(0).intValue(); + if(OSCrightToggle[3] == 1) {OSCrightToggleActive = 4;} + break; + case "/rx": + OSCrightX = OSCvalue; + break; + case "/ry": + OSCrightY = OSCvalue; + break; + } + + printOSC(false, theOscMessage); +} + + +void printOSC(boolean show, OscMessage theOscMessage) { + + if(show) { + print("Pattern:"+theOscMessage.addrPattern()); + print("\tTagType:"+theOscMessage.typetag()); + if(theOscMessage.checkTypetag("i")){ + print("\t\tValue:"+theOscMessage.get(0).intValue()); + } + if(theOscMessage.checkTypetag("s")){ + OSCvalue = parseFloat(theOscMessage.get(0).toString().replaceAll(",",".")); + print("\t\tValue:"+OSCvalue); + } + println(); + } + + print(OSCleftToggle[0]+"\t"); + print(OSCleftToggle[1]+"\t"); + print(OSCleftToggle[2]+"\t"); + print(OSCleftToggle[3]+"\t"); + print(OSCrightToggle[0]+"\t"); + print(OSCrightToggle[1]+"\t"); + print(OSCrightToggle[2]+"\t"); + print(OSCrightToggle[3]+"\t"); + print(OSCleftX+"\t"); + print(OSCleftY+"\t"); + print(OSCrightX+"\t"); + println(OSCrightY+"\t"); +} diff --git a/Processing/OSCReceive/OSCReceive.pde b/Processing/OSCReceive/OSCReceive.pde new file mode 100644 index 0000000..3f49b12 --- /dev/null +++ b/Processing/OSCReceive/OSCReceive.pde @@ -0,0 +1,43 @@ + +import oscP5.*; + +OscP5 oscP5; + +void setup() { + size(900, 500); + noStroke(); + stroke(255); + strokeWeight(3); + oscP5 = new OscP5(this,7000); +} + +void draw() { + background(50); + + for ( int i=0; i<4; i++) { + noStroke(); + fill(150); + + if(OSCleftToggle[i]==1) {fill(100,200,100,200);} else {fill(150);} + if(OSCleftToggleActive==i+1) {stroke(255);} else {noStroke();} + ellipse((50)+(100*i), 50, 40, 40); + + if(OSCrightToggle[i]==1) {fill(100,200,100,200);} else {fill(150);} + if(OSCrightToggleActive==i+1) {stroke(255);} else {noStroke();} + ellipse((550)+(100*i), 50, 40, 40); + } + + fill(200); + rect(190, 150, 20, 255, 10); + rect(70, 265, 255, 20, 10); + fill(100,200,100,200); + ellipse(200, OSCleftY+150, 40, 40); + ellipse(OSCleftX+70, 275, 40, 40); + + fill(200); + rect(690, 150, 20, 255, 10); + rect(570, 265, 255, 20, 10); + fill(100,200,100,200); + ellipse(700, OSCrightY+150, 40, 40); + ellipse(OSCrightX+570, 275, 40, 40); +} From 287a74d7c3121a64f8b931b898be631ddc720839 Mon Sep 17 00:00:00 2001 From: Carmine De Rosa Date: Tue, 29 Sep 2020 10:05:18 +0200 Subject: [PATCH 2/2] add wemos version --- V3-WeMos/Circuit/CIRCUIT.pdf | Bin 0 -> 51211 bytes V3-WeMos/Circuit/CIRCUIT.svg | 4559 +++++++++++++++++ V3-WeMos/Circuit/WeMos-D1-mini.svg | 323 ++ V3-WeMos/Circuit/mpu6050.svg | 498 ++ .../ESP8266sendMessage/ESP8266sendMessage.ino | 76 + .../ProcessingTestReceive.pde | 27 + 6 files changed, 5483 insertions(+) create mode 100644 V3-WeMos/Circuit/CIRCUIT.pdf create mode 100644 V3-WeMos/Circuit/CIRCUIT.svg create mode 100644 V3-WeMos/Circuit/WeMos-D1-mini.svg create mode 100644 V3-WeMos/Circuit/mpu6050.svg create mode 100644 V3-WeMos/ESP8266sendMessage/ESP8266sendMessage.ino create mode 100644 V3-WeMos/ProcessingTestReceive/ProcessingTestReceive.pde diff --git a/V3-WeMos/Circuit/CIRCUIT.pdf b/V3-WeMos/Circuit/CIRCUIT.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5766e4fe1f0fb18cb80471e14a4d80a340650c94 GIT binary patch literal 51211 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

M@q! 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 t!%hlPM*7jxGz(DTS4?0s{=H){{p*^$(8^B literal 0 HcmV?d00001 diff --git a/V3-WeMos/Circuit/CIRCUIT.svg b/V3-WeMos/Circuit/CIRCUIT.svg new file mode 100644 index 0000000..62a47a7 --- /dev/null +++ b/V3-WeMos/Circuit/CIRCUIT.svg @@ -0,0 +1,4559 @@ + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NEW MEDIA ARTS + + MO{VE}DULATION v.3.2 + + + + + diff --git a/V3-WeMos/Circuit/WeMos-D1-mini.svg b/V3-WeMos/Circuit/WeMos-D1-mini.svg new file mode 100644 index 0000000..aa890e9 --- /dev/null +++ b/V3-WeMos/Circuit/WeMos-D1-mini.svg @@ -0,0 +1,323 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/V3-WeMos/Circuit/mpu6050.svg b/V3-WeMos/Circuit/mpu6050.svg new file mode 100644 index 0000000..4d95b87 --- /dev/null +++ b/V3-WeMos/Circuit/mpu6050.svg @@ -0,0 +1,498 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 475C + + + 115C2 + + + + + + ITG/MPU + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INVENSENSE + MPU-6050 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 102 + + + 472 + + + 472 + + + 472 + + + + + + S201 + + + + + + X + + + Y + + + + + + + + + + + VCC + + + GND + + + SCL + + + SDA + + + XDA + + + XCL + + + AD0 + + + INT + + + + + \ No newline at end of file diff --git a/V3-WeMos/ESP8266sendMessage/ESP8266sendMessage.ino b/V3-WeMos/ESP8266sendMessage/ESP8266sendMessage.ino new file mode 100644 index 0000000..997e322 --- /dev/null +++ b/V3-WeMos/ESP8266sendMessage/ESP8266sendMessage.ino @@ -0,0 +1,76 @@ + +#include +#include +#include +#include +#include + +const int MPU=0x68; +int16_t AcX,AcY,AcZ; + +char ssid[] = "NETGEAR41"; +char pass[] = "magicalbanana0"; + +WiFiUDP Udp; +const IPAddress outIp(192,168,0,29); // remote IP of receiver computer +const unsigned int outPort = 7000; // remote port to receive OSC + +void setup() { + + Wire.begin(); + Wire.beginTransmission(MPU); + Wire.write(0x6B); + Wire.write(0); + Wire.endTransmission(true); + + Serial.begin(115200); + + Serial.print("Connecting to "); + Serial.println(ssid); + WiFi.begin(ssid, pass); + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); + +} + +void loop() { + + Wire.beginTransmission(MPU); + Wire.write(0x3B); + Wire.endTransmission(false); + Wire.requestFrom(MPU,14); + AcX=Wire.read()<<8|Wire.read(); + AcY=Wire.read()<<8|Wire.read(); + AcZ=Wire.read()<<8|Wire.read(); + + Serial.print(AcX); + Serial.print("\t"); + Serial.print(AcY); + Serial.print("\t"); + Serial.println(AcZ); + + OSCMessage msgRX("/movedulation/sliderRX"); + msgRX.add(AcX); + Udp.beginPacket(outIp, outPort); + msgRX.send(Udp); + Udp.endPacket(); + msgRX.empty(); + + OSCMessage msgRY("/movedulation/sliderRY"); + msgRY.add(AcY); + Udp.beginPacket(outIp, outPort); + msgRY.send(Udp); + Udp.endPacket(); + msgRX.empty(); + + + delay(100); +} diff --git a/V3-WeMos/ProcessingTestReceive/ProcessingTestReceive.pde b/V3-WeMos/ProcessingTestReceive/ProcessingTestReceive.pde new file mode 100644 index 0000000..442672a --- /dev/null +++ b/V3-WeMos/ProcessingTestReceive/ProcessingTestReceive.pde @@ -0,0 +1,27 @@ + +import oscP5.*; +import netP5.*; + +OscP5 oscP5; + +void setup() { + size(400,400); + frameRate(25); + oscP5 = new OscP5(this,7000); +} + +void draw() { + background(0); +} + +void oscEvent(OscMessage theOscMessage) { + print("### Pattern: "+theOscMessage.addrPattern()); + print(" TypeTag:"+theOscMessage.typetag()); + if(theOscMessage.checkTypetag("i")){ + print(" Value: "+theOscMessage.get(0).intValue()); + } + if(theOscMessage.checkTypetag("s")){ + print(" Value: "+theOscMessage.get(0)); + } + println(); +}