yellow - osc+udp

This commit is contained in:
Dooho Yi 2026-04-17 21:10:21 +09:00
parent 06dac6afed
commit a30e1312c6

View file

@ -15,19 +15,23 @@
// taskscheduler 기반으로 cnmat/osc/udp 로 esp8266에서 led를 on/off 하는 sub장치를 만드는데.. taskscheduler는 우선 필요없지만.. .. ? 그렇네.. + wifimanager를 넣어주고.. arduinoota도 기본으로 넣어주고.. taskscheduler는.. 그러니까... 모터 움직임 패턴을 읽어서.. 그대로 모터를 한번 돌려주는 걸로하고... 읽는 시간 rate 일정한 값 + 패턴 값 저장하는 어레이 2개.. 모터 2개 드라이브. roller2.. // taskscheduler 기반으로 cnmat/osc/udp 로 esp8266에서 led를 on/off 하는 sub장치를 만드는데.. taskscheduler는 우선 필요없지만.. .. ? 그렇네.. + wifimanager를 넣어주고.. arduinoota도 기본으로 넣어주고.. taskscheduler는.. 그러니까... 모터 움직임 패턴을 읽어서.. 그대로 모터를 한번 돌려주는 걸로하고... 읽는 시간 rate 일정한 값 + 패턴 값 저장하는 어레이 2개.. 모터 2개 드라이브. roller2..
// //
// 1 taskschduler + array + roller2 기반.. reset되면 몇 초 후에.. 패턴 1을 재생하도록. -> DONE // 1 taskschduler + array + roller2 기반.. reset되면 몇 초 후에.. 패턴 1을 재생하도록. -> DONE
// 2 여기에 osc_udp 추가해서.. 외부에서, 패턴을 실행시킬 수 있도록. (pd로 osc로 전송) // 2 여기에 osc_udp 추가해서.. 외부에서, 패턴을 실행시킬 수 있도록. (pd로 osc로 전송) -> DONE
// 3 pd에서 패턴값과.. 기본 파라미터를 조정하는 메세지 주기.. (+ 패턴값 체크하는 기능도 있으면 좋음...) // 3 여기에 wifimanager를 더해서.. 외부에서, 와이파이 설정도 하고, 상태 업데이트 할 수 있도록. (근데 이걸 위해서, 특수한 버튼 눌러야 한다면 flash버튼을 이용해 보던가.)
// 4 이 모듈이 접속할 웹 공간 준비. 도메인 + 서비스. 그곳에 world energy 패치 준비.. (pd 여도 좋음.) - 아니면, 웹페이지여도 좋음. / 여기서 WE가 취합되고, 평균되고, 발표됨. 각 모듈은 이 값을 읽어감. (여기까지가 기존의 셋업 -> 인터넷으로 옮겨간 상태임.)
// //
// -- 우선은 여기까지 하면, 갈수 있을지도 -- // -- 우선은 여기까지 하면, 갈수 있을지도 --
// //
// 4 여기에 wifimanager를 더해서.. 외부에서, 와이파이 설정도 하고, 상태 업데이트 할 수 있도록. (근데 이걸 위해서, 특수한 버튼 눌러야 한다면 flash버튼을 이용해 보던가.) // 5 pd에서 패턴값과.. 기본 파라미터를 조정하는 메세지 주기.. (+ 패턴값 체크하는 기능도 있으면 좋음...)
// 5 이 모듈이 접속할 웹 공간 준비. 도메인 + 서비스. 그곳에 world energy 패치 준비.. (pd 여도 좋음.) - 아니면, 웹페이지여도 좋음. / 여기서 WE가 취합되고, 평균되고, 발표됨. 각 모듈은 이 값을 읽어감. (여기까지가 기존의 셋업 -> 인터넷으로 옮겨간 상태임.)
// //
// ** IDENTITY ** // ** IDENTITY **
#define MY_SPECIES ("YELLOW") #define MY_SPECIES ("YELLOW")
#define MY_NAME ("YELOWEE {a.k.a. yellow1}") #define MY_NAME ("YELOWEE {a.k.a. yellow1}")
// ** WIFI **
char ssid[] = "TEEPOT";
char pass[] = "3333388888";
//arduino //arduino
#include <Arduino.h> #include <Arduino.h>
@ -40,15 +44,10 @@
// //
WiFiUDP Udp; WiFiUDP Udp;
// //
const IPAddress outIp(192,168,88,100); const IPAddress outIp(192,168,199,179); // server ip
const unsigned int outPort = 9999; const unsigned int outPort = 9999; // server port
const unsigned int localPort = 8888; const unsigned int localPort = 8888; // my port opened (<== expecting connection)
OSCErrorCode error; OSCErrorCode error;
////
unsigned int ledState = LOW;
////
char ssid[] = "nosignal 2G";
char pass[] = "1111100000";
//task //task
#include <TaskScheduler.h> #include <TaskScheduler.h>
@ -275,63 +274,37 @@ Task conductor_lonely_task(1000, TASK_FOREVER, &conductor_lonely, &runner, false
// Task blink_task(0, TASK_FOREVER, &blink, &runner, true); // -> ENABLED, at start-up. // Task blink_task(0, TASK_FOREVER, &blink, &runner, true); // -> ENABLED, at start-up.
//task #1 : osc processing //task #1 : osc processing
// void route_note(OSCMessage& msg, int offset) { void route_note(OSCMessage& msg, int offset) {
// //swap_println("got route_note!"); if (msg.fullMatch("/word", offset)) {
// // (1) --> /onoff wordA = msg.getFloat(0);
// if (msg.fullMatch("/onoff", offset)) { wordB = msg.getFloat(0);
// // riff_A_start_task.restartDelayed(100);
// note.clear(); riff_B_start_task.restartDelayed(100);
// // //
// note.onoff = msg.getFloat(0); Serial.print("OSC: /word : ");
// // if (note.onoff != 0) note.onoff = 1; Serial.print(wordA);
// } Serial.print(", ");
// // (2) --> /velocity Serial.println(wordB);
// if (msg.fullMatch("/velocity", offset)) { }
// note.velocity = msg.getFloat(0); }
// } extern Task osc_task;
// // (3) --> /pitch void osc()
// if (msg.fullMatch("/pitch", offset)) { {
// note.pitch = msg.getFloat(0); //osc
// } OSCMessage msg;
// // (4) --> /id int size = Udp.parsePacket();
// if (msg.fullMatch("/id", offset)) { if (size > 0) {
// note.id = msg.getInt(0); while (size--) {
// } msg.fill(Udp.read());
// // (5) --> /x }
// if (msg.fullMatch("/x", offset)) { if(!msg.hasError()) {
// note.x1 = msg.getFloat(0); // on '/yellow'
// note.x2 = msg.getFloat(1); msg.route("/yellow", route_note);
// note.x3 = msg.getFloat(2); Serial.println("OSC: /yellow");
// note.x4 = msg.getFloat(3); }
// note.ps = msg.getFloat(4); }
// } }
// } Task osc_task(0, TASK_FOREVER, &osc, &runner, true); // -> ENABLED, at start-up.
// extern Task osc_task;
// void osc()
// {
// //osc
// OSCBundle bundleIN;
// int size;
// if (SLIPSerial.available()) {
// while(!SLIPSerial.endofPacket()) {
// if( (size = SLIPSerial.available()) > 0) {
// while(size--) {
// bundleIN.fill(SLIPSerial.read());
// }
// }
// }
// if(!bundleIN.hasError()) {
// // on '/note'
// bundleIN.route("/note", route_note);
// #if defined(ESP32)
// static int a = 0;
// screen_text = String(a) + " => \n" + String(bundleIN.timetag.seconds-2208988800UL) + "\n" + String(bundleIN.timetag.fractionofseconds);
// a++;
// #endif
// }
// }
// }
// Task osc_task(0, TASK_FOREVER, &osc, &runner, true); // -> ENABLED, at start-up.
// //
void setup() { void setup() {
@ -361,6 +334,21 @@ void setup() {
// WiFiMode_t node_type = WIFI_STA; // WiFiMode_t node_type = WIFI_STA;
// WiFi.mode(node_type); // WiFi.mode(node_type);
// test wifi udp
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());
Serial.println("Starting UDP");
Udp.begin(localPort);
Serial.print("Local port: ");
Serial.println(Udp.localPort());
// //
Serial.println("-"); Serial.println("-");
Serial.println("\".-.-.-. :)\""); Serial.println("\".-.-.-. :)\"");
@ -378,7 +366,7 @@ void setup() {
// wordB = 0; // wordB = 0;
// riff_B_start_task.restartDelayed(1000); // riff_B_start_task.restartDelayed(1000);
// //
conductor_lonely_task.restartDelayed(5000); // conductor_lonely_task.restartDelayed(5000);
// //
// for (int idx = 0; idx < yellowA.size(); idx++) Serial.println(yellowA[idx].size()); // for (int idx = 0; idx < yellowA.size(); idx++) Serial.println(yellowA[idx].size());
// for (int idx = 0; idx < yellowB.size(); idx++) Serial.println(yellowB[idx].size()); // for (int idx = 0; idx < yellowB.size(); idx++) Serial.println(yellowB[idx].size());