{"id":489,"date":"2015-09-18T12:01:26","date_gmt":"2015-09-18T03:01:26","guid":{"rendered":"http:\/\/goji2100.s199.coreserver.jp\/blog\/?p=489"},"modified":"2021-09-11T20:06:05","modified_gmt":"2021-09-11T11:06:05","slug":"wi-fi%e3%83%a9%e3%82%b8%e3%82%b3%e3%83%b3%e3%82%ab%e3%83%bc%e3%82%92android-osc%e3%82%a2%e3%83%97%e3%83%aa%e3%81%a7%e6%93%8d%e4%bd%9c%e3%81%99%e3%82%8b","status":"publish","type":"post","link":"https:\/\/goji2100.com\/blog\/?p=489","title":{"rendered":"Wi-Fi\u30e9\u30b8\u30b3\u30f3\u30ab\u30fc\u3092Android OSC\u30a2\u30d7\u30ea\u3067\u64cd\u4f5c\u3059\u308b"},"content":{"rendered":"<p>\u524d\u8a18\u4e8b\u306e\u300c<a href=\"https:\/\/goji2100.com\/blog\/?p=453\" target=\"_blank\" rel=\"noopener\">ESP-WROOM-02 Wi-Fi\u30e9\u30b8\u30b3\u30f3\u30ab\u30fc<\/a>\u300d\u3067\u306fApple Store App\u306eiOSC\u3092\u4f7f\u3063\u3066\u64cd\u4f5c\u3057\u307e\u3057\u305f\u304c\u3001\u4eca\u56de\u306fAndroid\u643a\u5e2f\u304b\u3089\u64cd\u4f5c\u3059\u308b\u30a2\u30d7\u30ea\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<br \/>\nAndroid\u4e0a\u3067\u3082OSC\u30a2\u30d7\u30ea\u306f\u591a\u304f\u3042\u308a\u307e\u3059\u304c\u3001\u305d\u306e\u4e2d\u3067\u30e9\u30b8\u30b3\u30f3\u306e\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3063\u307d\u3044\u64cd\u4f5c\u753b\u9762\u306b\u8a2d\u5b9a\u3067\u304d\u308bAndrOSC\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\uff08Android\u7248\u3067\u3082\u540c\u69d8\u306b\u30a2\u30af\u30bb\u30b9\u30dd\u30a4\u30f3\u30c8\u7121\u3057\u3067\u76f4\u63a5\u63a5\u7d9a\u3067\u304d\u307e\u3059\uff09<\/p>\n<p><strong><a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.ahmetkizilay.controls.androsc&amp;hl=ja\" target=\"_blank\" rel=\"noopener\">AndrOSC\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30b5\u30a4\u30c8<\/a><\/strong>\uff08\u5bc4\u4ed8\u30a2\u30d7\u30ea\uff09<\/p>\n<p><strong>AndrOSC\u3067\u8a2d\u5b9a\u3057\u305f\u64cd\u4f5c\u753b\u9762<\/strong><\/p>\n<div id=\"attachment_490\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/goji2100.com\/blog\/wp-content\/uploads\/2015\/09\/004.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-490\" class=\"size-medium wp-image-490\" src=\"https:\/\/goji2100.com\/blog\/wp-content\/uploads\/2015\/09\/004-300x169.png\" alt=\"AndrOSC\u64cd\u4f5c\u753b\u9762\" width=\"300\" height=\"169\" srcset=\"https:\/\/goji2100.com\/blog\/wp-content\/uploads\/2015\/09\/004-300x169.png 300w, https:\/\/goji2100.com\/blog\/wp-content\/uploads\/2015\/09\/004.png 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-490\" class=\"wp-caption-text\">AndrOSC\u64cd\u4f5c\u753b\u9762<\/p><\/div>\n<p><strong>AndrOSC\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u8a2d\u5b9a\u753b\u9762<\/strong><\/p>\n<div id=\"attachment_496\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/goji2100.com\/blog\/wp-content\/uploads\/2015\/09\/090.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-496\" class=\"size-medium wp-image-496\" src=\"https:\/\/goji2100.com\/blog\/wp-content\/uploads\/2015\/09\/090-300x169.png\" alt=\"AndrOSC\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u8a2d\u5b9a\u753b\u9762\" width=\"300\" height=\"169\" srcset=\"https:\/\/goji2100.com\/blog\/wp-content\/uploads\/2015\/09\/090-300x169.png 300w, https:\/\/goji2100.com\/blog\/wp-content\/uploads\/2015\/09\/090.png 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-496\" class=\"wp-caption-text\">AndrOSC\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u8a2d\u5b9a\u753b\u9762<\/p><\/div>\n<p><!--more \u3010\u7d9a\u304d\u3092\u8aad\u3080\u3011--><\/p>\n<p>&nbsp;<\/p>\n<p><strong>AndrOSC\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb<\/strong>\uff08car2.json\uff09<br \/>\n[\u5834\u6240\uff1a\/\u5185\u8535\u30b9\u30c8\u30ec\u30fc\u30b8\/perisonic\/androsc\/templates\/car2.json]<\/p>\n<pre class=\"lang:default decode:true\" title=\"AndrOSC\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb(car2.json)\">{\r\ncontents: [\r\n{\r\n\ttype:\"hslider\",\r\n\tcursorFillColor: [255, 0, 0],\r\n\tdefaultFillColor: [20, 0, 0],\r\n\tborderColor: [155, 0, 0],\r\n\theight: 200,\r\n\tslidedFillColor: [100, 0, 0],\r\n\twidth: 1024,\r\n\trect: [580, 300, 1604, 500],\r\n\tmaxValue: 127.0,\r\n\tminValue: 0.0,\r\n\tOSCValueChanged: \"\/osc\/L $1\"\r\n},\r\n{\r\n\ttype:\"hslider\",\r\n\tcursorFillColor: [255, 0, 0],\r\n\tdefaultFillColor: [20, 0, 0],\r\n\tborderColor: [155, 0, 0],\r\n\theight: 200,\r\n\tslidedFillColor: [100, 0, 0],\r\n\twidth: 1024,\r\n\trect: [580, 600, 1604, 800],\r\n\tmaxValue: 127.0,\r\n\tminValue: 0.0,\r\n\tOSCValueChanged: \"\/osc\/R $1\"\r\n},\r\n{\r\n\ttype:\"toggle\",\r\n\tdefaultFillColor: [20, 0, 0],\r\n\tdefaultText: \"Light OFF\",\r\n\tfontColor: [255, 255, 255],\r\n\tborderColor: [250, 0, 0],\r\n\theight: 200,\r\n\ttoggledFillColor: [250, 0, 0],\r\n\ttoggledText: \"Light ON\",\r\n\twidth: 200,\r\n\trect: [300, 600, 500, 800],\r\n\toscToggleOn: \"\/osc\/F 1\",\r\n\toscToggleOff: \"\/osc\/F 0\",\r\n\tfireOSCOnToggleOff: \"true\"\r\n},\r\n{\r\n\ttype:\"button\",\r\n\tdefaultFillColor: [0, 0, 60],\r\n\theight: 200,\r\n\tpressedFillColor: [255, 9, 0],\r\n\tborderColor: [255, 0, 0],\r\n\tfontColor: [255, 255, 255],\r\n\ttext: \"Horn\",\r\n\trect: [300, 300, 500, 500],\r\n\twidth: 200,\r\n\toscButtonPressed: \"\/osc\/C 1\"\r\n}\r\n]}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>AndrOSC\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u8a2d\u5b9a\u753b\u9762\u306e\u4f8b<\/strong><\/p>\n<p>File Commander\u306a\u3069\u306e\u30d5\u30a1\u30a4\u30eb\u64cd\u4f5c\u30a2\u30d7\u30ea\u304c\u4f7f\u3048\u306a\u3044\u74b0\u5883\u306e\u65b9\u306f\u3001AndrOSC\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u8a2d\u5b9a\u753b\u9762\u3067\u3082\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u597d\u307f\u306b\u5408\u308f\u305b\u3066\u30dc\u30bf\u30f3\u306e\u4f4d\u7f6e\u3001\u5927\u304d\u3055\u3001\u8272\u306a\u3069\u3092\u81ea\u7531\u306b\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002<\/p>\n<div style=\"float: left;\">\n<div id=\"attachment_502\" style=\"width: 160px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/goji2100.com\/blog\/wp-content\/uploads\/2015\/09\/100.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-502\" class=\"size-thumbnail wp-image-502\" src=\"https:\/\/goji2100.com\/blog\/wp-content\/uploads\/2015\/09\/100-150x150.png\" alt=\"AndrOSC\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u8a2d\u5b9a\u753b\u9762\u4f8b\" width=\"150\" height=\"150\" \/><\/a><p id=\"caption-attachment-502\" class=\"wp-caption-text\">AndrOSC\u306e\u8a2d\u5b9a\u753b\u9762\u4f8b(1<\/p><\/div>\n<\/div>\n<div style=\"float: left;\">\n<div id=\"attachment_503\" style=\"width: 160px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/goji2100.com\/blog\/wp-content\/uploads\/2015\/09\/102.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-503\" class=\"size-thumbnail wp-image-503\" src=\"https:\/\/goji2100.com\/blog\/wp-content\/uploads\/2015\/09\/102-150x150.png\" alt=\"AndrOSC\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u8a2d\u5b9a\u753b\u9762\u4f8b\" width=\"150\" height=\"150\" \/><\/a><p id=\"caption-attachment-503\" class=\"wp-caption-text\">AndrOSC\u306e\u8a2d\u5b9a\u753b\u9762\u4f8b(2<\/p><\/div>\n<\/div>\n<div style=\"float: left;\">\n<div id=\"attachment_504\" style=\"width: 160px\" class=\"wp-caption alignright\"><a href=\"https:\/\/goji2100.com\/blog\/wp-content\/uploads\/2015\/09\/110.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-504\" class=\"size-thumbnail wp-image-504\" src=\"https:\/\/goji2100.com\/blog\/wp-content\/uploads\/2015\/09\/110-150x150.png\" alt=\"AndrOSC\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u8a2d\u5b9a\u753b\u9762\u4f8b\" width=\"150\" height=\"150\" \/><\/a><p id=\"caption-attachment-504\" class=\"wp-caption-text\">AndrOSC\u306e\u8a2d\u5b9a\u753b\u9762\u4f8b(3<\/p><\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>AndrOSC\u5bfe\u5fdc\u7248\u30b9\u30b1\u30c3\u30c1<\/strong>\uff08\u5b9f\u6570\u5024\u60c5\u5831\u306b\u5bfe\u5fdc\uff09<\/p>\n<p>AndrOSC\u3067\u306f\u30b9\u30e9\u30a4\u30c0\u30fc\u4f4d\u7f6e\u60c5\u5831\u304c\u5b9f\u6570\u5024\u3067\u901a\u77e5\u3055\u308c\u307e\u3059\u3001\u3053\u306e\u5b9f\u6570\u5024\u3092\u53d7\u53d6\u308c\u308b\u3088\u3046\u306b\u5909\u66f4\u3057\u307e\u3057\u305f\uff08\u3053\u306e\u5909\u66f4\u7248\u3067\u3082iOSC\u304b\u3089\u64cd\u4f5c\u3067\u304d\u307e\u3059\uff09\u3002<\/p>\n<pre class=\"lang:arduino decode:true\" title=\"AndrOSC\u5bfe\u5fdc\u7248\u30b9\u30b1\u30c3\u30c1\">\r\n#include &lt;ESP8266WiFi.h&gt;\r\n#include &lt;WiFiUdp.h&gt;\r\n\r\n#define LED_Light  2\r\n#define LED_Hone  15\r\n#define PWM_LF     4\r\n#define PWM_LR    12\r\n#define PWM_RF     5\r\n#define PWM_RR    13\r\n\r\nconst char ssid[] = \"ESPCar\";\r\nconst char pass[] = \"ESP8266ap\";\r\n\r\nWiFiUDP udp;\r\nunsigned int localPort = 10000;\r\nconst int OSC_PACKET_SIZE = 256;\r\nchar packetBuffer[OSC_PACKET_SIZE];\r\n\r\nvoid setup() {\r\n  Serial.begin(115200);\r\n  WiFi.softAP(ssid, pass);\r\n  IPAddress myIP = WiFi.softAPIP();\r\n  Serial.print(\"AP IP address: \");  Serial.println(myIP);\r\n\r\n  Serial.println(\"Starting UDP\");\r\n  udp.begin(localPort);\r\n  Serial.print(\"Local port: \");  Serial.println(udp.localPort());\r\n\r\n  pinMode(LED_Light, OUTPUT);\r\n  pinMode(LED_Hone , OUTPUT);\r\n  pinMode(PWM_LF   , OUTPUT);\r\n  pinMode(PWM_LR   , OUTPUT);\r\n  pinMode(PWM_RF   , OUTPUT);\r\n  pinMode(PWM_RR   , OUTPUT);\r\n  analogWrite(PWM_LF, 0);\r\n  analogWrite(PWM_LR, 0);\r\n  analogWrite(PWM_RF, 0);\r\n  analogWrite(PWM_RR, 0);\r\n}\r\n\r\nint f2i(char *f) {\r\n  char w;\r\n  w = *(f    ); *(f    ) = *(f + 3); *(f + 3) = w;\r\n  w = *(f + 1); *(f + 1) = *(f + 2); *(f + 2) = w;\r\n  return ((int) *(float *)f);\r\n}\r\n\r\nvoid loop() {\r\n  int rlen, NoData = 0;\r\n  int Val_i = 0, Val_L = 0, Val_R = 0, Val_F = 0, Val_C = 0;\r\n\r\n  while (1) {\r\n    if (Val_C &amp;&amp; --Val_C == 0) analogWrite(LED_Hone, 0);  \/\/ MAX 50 ticks\r\n    if (!(rlen = udp.parsePacket())) {\r\n      if (++NoData &gt; 50) {\r\n        analogWrite(PWM_LF, 0); analogWrite(PWM_LR, 0);\r\n        analogWrite(PWM_RF, 0); analogWrite(PWM_RR, 0);\r\n      }\r\n      delay(10);\r\n      continue;\r\n    }\r\n\r\n    NoData = 0;\r\n    udp.read(packetBuffer, (rlen &gt; OSC_PACKET_SIZE) ? OSC_PACKET_SIZE : rlen);\r\n    if (strncmp(&amp;packetBuffer[0], \"\/osc\/\", 5) == 0) {\r\n      if (packetBuffer[9] == 'i') { Val_i =      packetBuffer[15] ; } else\r\n      if (packetBuffer[9] == 'f') { Val_i = f2i(&amp;packetBuffer[12]); }\r\n      switch (packetBuffer[5]) {\r\n        case 'F':\r\n          digitalWrite(LED_Light, (Val_F = Val_i));\r\n          break;\r\n        case 'C':\r\n          Val_i *= 50;\r\n          analogWrite(LED_Hone, (Val_C = Val_i) ? 512 : 0);\r\n          break;\r\n        case 'L':\r\n          analogWrite(PWM_LF, 0); analogWrite(PWM_LR, 0);\r\n          Val_L = Val_i;\r\n          if (Val_L &gt;= (64 - 8) &amp;&amp; Val_L &lt;= (64 + 8)) Val_L = 64;\r\n          if (Val_L &gt;= 64)\r\n                analogWrite(PWM_LF, (Val_L - 64) * 16);\r\n          else  analogWrite(PWM_LR, (63 - Val_L) * 16);\r\n          break;\r\n        case 'R':\r\n          analogWrite(PWM_RF, 0); analogWrite(PWM_RR, 0);\r\n          Val_R = Val_i;\r\n          if (Val_R &gt;= (64 - 8) &amp;&amp; Val_R &lt;= (64 + 8)) Val_R = 64;\r\n          if (Val_R &gt;= 64)\r\n                analogWrite(PWM_RF, (Val_R - 64) * 16);\r\n          else  analogWrite(PWM_RR, (63 - Val_R) * 16);\r\n          break;\r\n      }\r\n    } else {\r\n\/\/    for (int w = 0; w &lt; 24; w++) Serial.printf(\"%2X,\", packetBuffer[w]);\r\n\/\/    Serial.printf(\"\\n\");\r\n    }\r\n\/\/  Serial.printf(\"F=%d, C=%d, L=%4d, R=%4d\\n\", Val_F, Val_C, Val_L, Val_R);\r\n    delay(2);\r\n  }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u8a18\u4e8b\u306e\u300cESP-WROOM-02 Wi-Fi\u30e9\u30b8\u30b3\u30f3\u30ab\u30fc\u300d\u3067\u306fApple Store App\u306eiOSC\u3092\u4f7f\u3063\u3066\u64cd\u4f5c\u3057\u307e\u3057\u305f\u304c\u3001\u4eca\u56de\u306fAndroid\u643a\u5e2f\u304b\u3089\u64cd\u4f5c\u3059\u308b\u30a2\u30d7\u30ea\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002 Android\u4e0a\u3067\u3082OSC\u30a2\u30d7\u30ea\u306f [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,26,9,4,3],"tags":[],"_links":{"self":[{"href":"https:\/\/goji2100.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/489"}],"collection":[{"href":"https:\/\/goji2100.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/goji2100.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/goji2100.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/goji2100.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=489"}],"version-history":[{"count":37,"href":"https:\/\/goji2100.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/489\/revisions"}],"predecessor-version":[{"id":1389,"href":"https:\/\/goji2100.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/489\/revisions\/1389"}],"wp:attachment":[{"href":"https:\/\/goji2100.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=489"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/goji2100.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=489"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/goji2100.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=489"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}