リアルとバーチャルの間

気まぐれに書いてます。

【明日MV解禁】絶対領域拡張計画「光るスカート」×妄想キャリブレーション

絶対領域拡張計画「光るスカート」シンクロ を作りました。

「光るスカート」が妄想キャリブレーションとコラボレーションする事で
光が歌とシンクロする「光るスカート」に進化しました。
6つのスカートが完璧なシンクロをしながらMVの世界を彩ります!

https://41.media.tumblr.com/1d767acb1464056c5c0eb5ccb221f139/tumblr_nl2jnts8TZ1qikn9uo1_540.jpg

絶対領域拡張計画「光るスカート」とは
ミニスカートの下(スカートの内側)からニーソックスの上部分にある「絶対領域」に対して光を照らす事で太ももに光があたり「絶対領域」から「こもれび領域」へ進化する新感覚のスカートになります。

スカートのバージョンアップは三回目になります。
・光るスカート α版
・光るスカート β版
・光るスカート シンクロ


妄想キャリブレーション「魔法のジュース」特設サイト

いよいよ明日公開です!自分もめっちゃ楽しみです!
どうぞよろしくお願いします。

Simple Maker’s Kitで3Dプリンターやりました。

このSimple Maker’s Kitを使いました。
Simple Maker’s Kit | Printrbot

この動画が参考になりました。

Printrbot Simple(Maker's and Metal) 操作説明 - YouTube

Cura
 https://software.ultimaker.com/

Cura日本語化
 http://www.thingiverse.com/thing:265492

3Dプリンターでプロペラ部分を作ってみたのでモーターにつけてまわしてみた。

http://amanoart.tumblr.com/post/113500154444

天野清之 テストルーム

ボタンでLチカ

電流は、プラスからマイナスに流れます。

5Vから0Vに向かって流れるので、VCCからGNDに電流を流すだけども
抵抗入れないで直結すると無限大に電流が流れるのでarduinoとか再起動しまくります。

オームの法則
V(電圧) =I(電流)×R(抵抗)
→R = V/Iとかになる。

※ラクガキ
https://40.media.tumblr.com/8b1c654296e21c961200c1e1b891a968/tumblr_nl3k7egqF21tvsz7po1_540.jpg

5Vから抵抗で制御してボタンのオンオフでLEDを制御しています。
https://40.media.tumblr.com/152f98917862bf16113acd1ae34f770b/tumblr_nl3kehHtBA1thbn5ko1_540.jpg

#define LED 13
#define BUTTON 7
int val = 0;

void setup(){
  Serial.begin(9600);
  pinMode(LED,OUTPUT);
  pinMode(BUTTON,INPUT);
}

void loop(){
  val = digitalRead(BUTTON);
  Serial.println(val);

  if(val != HIGH){
    digitalWrite(LED,HIGH);
  } 
  else{
    digitalWrite(LED,LOW);
  }
}

http://amanoart.tumblr.com/post/113421222479

天野清之 テストルーム

%をうまく使う方法

例えば、%の計算をif文に使うと結構使えます。

%を使えば指定の数字の値の時の自乗はゼロになります。
(変化する値) % (ゼロにしたい値)

1%10=1
2%10=2
10%10=0
20%10=0
12%12=0
13%12=1
24%12=0

みたいな感じです。

ProcessingでOSCを使おう!

OSCとは、コンピュータ音楽のための通信プロトコルです。
OpenSound Control - Wikipedia

利点としては、双方向通信ができる。パターンマッチングができる。
帯域幅の制限がなく、多くのソフトウェアに実装されている事にあると思う。

通信機能には7階層の構造があります。
【階層】
第七層:物理層、電気信号の変換
第六層:データリンク層 通信機器間の直接的な信号の受け渡し
第五層:ネットワーク層 ネットワークにおいて通信経路の選択
第四層:トランスポート層 ネットワークにおける通信管理
第三層:セッション層 通信プログラム間の通信の開始から終了までの手順
第二層:プレゼンテーション層 データの表現方法
第一層:アプリケーション層 ユーザーが操作するインターフェイス

OSCは、7から5層に入ります。

【IPとポート番号について】

IPとは、インターネットやイントラネットなどのIPネットワークに接続されたコンピュータ1台1台に割り振られた識別番号(127.0.0.1自身のアドレス)

ポート番号とは
複数の相手と同時に接続を行うためにIPアドレスの下に設けられたサブアドレス
(0から65535)まで使用可能。

【OSCメッセージの仕組み】
URIと同様に/で区切ることで階層構造を表現しています。
/1/fader1 みたいな感じ。
processingだと、theOscMessage.checkAddrPatternで受け取れます。


では、メッセージを受け取って適当に処理されるプログラムを書いてみました。

import oscP5.*;
import netP5.*;

// VARIABLE //////////////////////////////////////////////
float xA = -100;
float yA;
float csXY = 40;
OscP5 oscP5;
NetAddress myBroadcastLocation;

// SETUP ////////////////////////////////////////////// 
void setup() {
  size(320, 240);
  background(0);
  smooth();
  
  //osc
  oscP5 = new OscP5(this,12000);
  //myBroadcastLocation = new NetAddress("127,0,0,1",32000);
}

// DRAW //////////////////////////////////////////////
void draw() {
  noStroke();
  fill(0, 30);
  rect(0, 0, width, height);
  plus();
}

// PRIVATE //////////////////////////////////////////////
void plus() {
  yA = sq(xA)/60;
  noStroke();
  fill(255, 255, 255, 80);
  ellipse(xA+width/2,yA,csXY,csXY);
  xA++;
  //println(yA);
  
  if(xA > 200){
   xA = -200; 
  }
  
}

void oscEvent(OscMessage theOscMessage) {
  println("### received an osc message with addrpattern "+theOscMessage.addrPattern()+" and typetag "+theOscMessage.typetag());
  theOscMessage.print();
  
  if(theOscMessage.checkAddrPattern("/1/fader1") == true){
   println("true");
   float value = theOscMessage.get(0).floatValue();
   println(value);
   csXY = 100*value;
  }else{
   println("false"); 
  }
  
}
||>

今回は、送信側はiphoneで済ませています。
500円しますが適度でいいです。
[https://itunes.apple.com/jp/app/touchosc/id288120394?mt=8:embed]

エンテックのDMXUSB PROを使ってみました。

エンテックのDMXUSB PRO
ENTTEC(エンテック) DMX USB PRO DMXコントローラー・インターフェース 激安価格販売:アカリセンター

DMXUSBを使えば照明をコントロールしたり、レーザーをコントロールしたりできるので
ちょっといじってみました。

こちらの照明は、設定をA001にすることでDMXのコントロールができるようになります。
https://41.media.tumblr.com/cb58a9b34aaa01658bd1054a5fb66ba1/tumblr_nkdivujbz61thbn5ko2_400.jpg

import dmxP512.*;
import processing.serial.*;
DmxP512 dmxOutput;
boolean LANBOX=false;
String LANBOX_IP="192.168.1.77";
boolean DMXPRO=true;

void setup() {
  size(245, 245, JAVA2D);    
  dmxOutput=new DmxP512(this,universeSize,false);
  if(LANBOX){
    dmxOutput.setupLanbox(LANBOX_IP);
  }
  if(DMXPRO){
    dmxOutput.setupDmxPro("/dev/tty.usbserial-EN150882",115000);
  }
}

void draw() {
  background(0);
   int[] values = new int[5];
   if(keyPressed == true){
    background(255);
    values[0] = 255;
    values[1] = 255;
    values[2] = 255;
    values[3] = 255;
    values[4] = 0;
    dmxOutput.set(5,values);
    println(values);
   }
}

こんな感じで光がコントロールできます。
https://40.media.tumblr.com/d5fc8587e10fa825e802132f83ff0482/tumblr_nkdivujbz61thbn5ko1_400.jpg

ProcessingでAndroidのBluetooth通信テスト

Android>Sketch Permissionsから以下をチェック
https://41.media.tumblr.com/d911e8b7999e11b46d8daa96e1da12cc/tumblr_nkd5gbluSd1tvsz7po1_540.png


スクリプトはこんな感じで書いて書き出し。

import android.bluetooth.BluetoothAdapter;
BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();

void setup(){
 //orientation(LANDSCAPE);
}

void draw(){
 if(bluetooth.isEnabled()){
 background(255,0,0);
 } else {
 background(0,0,0);
 }
}

通信が出来たらAndroidの画面が赤くなるのでそれで成功です。

Linino Oneを購入してつなげてみました!

wifi接続してnode.jsなどを使う為に、Linino Oneを購入しました。

購入先はこちら
Linino ONE: マイコン関連 秋月電子通商 電子部品 ネット通販

でーん!!!!
https://41.media.tumblr.com/859d0a05275597284f6d7bfd92b66232/tumblr_njyn9ccmCq1tvsz7po3_r1_500.jpg

開封!!!!
https://40.media.tumblr.com/a6b395633bf9c84c2c8d3dfb4390754a/tumblr_njyn9ccmCq1tvsz7po4_r1_500.jpg


接続します。

まず,
linino oneをmicro usbでPCと接続。

ターミナルを起動します。
以下でusbと接続しているlinenoの名前を確認!

ls /dev/tty.usb*

linino oneに接続されます。

$ screen /dev/tty.usb******** 115200

wifiの設定にlinino oneが表示されるので
今度はブラウザで以下にアクセス
http://192.168.240.1

ログインを求められるので説明書に記載されている
パスワードを入力します。

こんな画面が無事に表示をされたら
https://41.media.tumblr.com/31196938ce91e26f05ef13599e679fef/tumblr_njyn9ccmCq1tvsz7po1_540.jpg

ブラウザの設定画面からconfigureのボタンを押して設定変更
https://41.media.tumblr.com/11c3b40c5ef2e4db4b29221a1d037115/tumblr_njyn9ccmCq1tvsz7po2_540.jpg

ここの赤丸を入れているwifiを任意のものにして
wifiのパスワードを入力します。

configure&restartボタンを押せば設定変更が面に切り替わるので
しばらく待ちましょう!

完了したらターミナルに戻って

$ screen /dev/tty.usb******** 115200

lininoに接続

ifconfig

ipアドレスが付与されているのかを確認して問題がなければ

ping google.com

これで接続されれば成功!


Linino™ One | Linino

ちなみに、lininoのwifiリセットボタンは、
押してから5分くらいでリセットされるっぽいです。

シリアルとは何なのか?

シリアルとは何なのか?っと言うのを簡単に説明してみようと思いました。

・シリアルとは
直列とか一本という意味。

・シリアル通信
1本のケーブルから1ビットずつ順番にデータを送受信する通信方式。
※シリアル転送とも言う

・シリアルポート
シリアル転送方式の通信コネクタ
※RS232-Cの通信規格(USEやSerial-ATA

通信速度は、9600bpsが暗黙のルールのようです。

・シリアルコンソール
サーバやネットワーク機器を設定する為の機器、ケーブル、ターミナルソフト

arduino leonardoでシリアル通信できない時の解決策

arduino unoで動くけども、leonardoで動かない!!!!
って事があったのですが
解決方法は、シリアルピンがleonardoは2つあるので
SerialをすべてSerial1に変更すればよいという事でした。

以下参考のソースになります。

int LED = 13;
char inByte = 0;

void setup()
{
   
  Serial1.begin(9600);  
//  while (!Serial) {
//    ; // シリアルポートが開くのを待つ。
    //Leonardoでだけ必要らしいが使わなかった。
//  }
  pinMode(13,OUTPUT);
}

void loop()
{
//  digitalWrite(LED,HIGH);
  
  if(Serial1.available() > 0)
  {
    inByte = Serial1.read();
    if(inByte >= 100){
    digitalWrite(LED,HIGH);
  }
   else{
   digitalWrite(LED,LOW); 
  }
    Serial1.println(inByte, DEC);
    delay(40);
  }
}