2006年11月アーカイブ
Max/MSP4.6(Jitter)でWebcamを使うための手順です。Windowsの場合です。何もしない状態で「jit.qt.grab」オブジェクトを使うサンプルなどをうごかそうとするとerrorが出て映像を取得できません。(error: jit.qt.grab: could not create video channnel -9405 ってエラーが出る)
解決するにはWinVDIGをインストールします。QuickTime7とWinVDIG1.0.4が相性悪いようなので1.0.1をインストールすること。(参考:ほよログ新館「Processingでwebcamを使う」)入ってない場合はQuickTime7もインストールします。以上で映像を取得できるようになります。

動いた。
(プログラムは2061:Maxオデッセイ―音楽と映像をダイナミックに創造する!最高の開発環境を徹底解説
の2061サンプルブラウザより)
11月25日土曜、ParavieがNHKの「デジタルスタジアム」という番組で紹介されます。同じ研究室のshootballというプロジェクトも一緒に出ます。僕もちょっと出演してます。
BS-2(24:30-)とBShi(22:00-)なのでBSが無いと見れませんが、見れる方はぜひご覧ください。
ちょうど一年位前にmoo-pongもでてます。
(インタラクションデザイン2006第6回の資料です。)
Arduinoでデジタルインプットを使う方法を紹介します。
スイッチを押すとLEDが消えるのと押した回数がカウントされていて、シリアル経由でカウントを教えてくれるものをつくります。スイッチが押されたら何かする、スイッチが何度おされたらどういう処理をする、というようなことができるようになります。
インストールから動作確認までは以下を参照すると良いです。
・Arduino開発環境のインストール方法
・LEDを光らせる
・デジタル/アナログインプット
ちなみに、Arduino.exeを起動しようとしてもできない人はJ2SDKをインストールしてパスを通してあげると起動できるようになると思います。パスの通し方は例えばこちら等を参考にさせてもらうとよいでしょう。
■ブレッドボードへの接続の仕方
- POWERの5VとGndをそれぞれブレッドボードにつなぎます。
- 12番ピンとLEDのアノード(+)、LEDのカソード(-)はGndにつなぎます。
- Digital7番ピンとスイッチをつなぎます。
- 7番ピンとつないだ足は抵抗を通して5Vにつなぎます。
- 抵抗のもう一方の足はGndにつなぎます。
スイッチと電源(5V)の間に入れる抵抗を「プルアップ抵抗」と言います。スイッチが押されていないときに入力を安定させるために抵抗を接続します。(ためしにこの抵抗を取ってつないでみるとLEDが(点滅しているのが見えないほど)ものすごい速さで点滅します。highとlowの値がすごい勢いでデジタルインプットピンに送られています。)
スイッチとGndの間に入れる場合は「プルダウン抵抗」と言います。
■プログラム
つづいてプログラムを書きましょう。
//スイッチ押された回数をカウントする
int ledPin = 12; // choose the pin for the LED
int inPin = 7; // choose the input pin (for a pushbutton)
int val = 0; // variable for reading the pin status
int count=0;//スイッチの押された回数
boolean check=true;//押されっぱなしはカウントしない
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inPin, INPUT); // declare pushbutton as input
}
void loop(){
val = digitalRead(inPin); // read input value
if (val == HIGH) { //スイッチオフ
digitalWrite(ledPin, HIGH); // turn LED OFF
check=false;
} else { //スイッチオン
if(check==false){
check=true;
count++;
Serial.println(count);
digitalWrite(ledPin, LOW); // turn LED ON
}
}
}
int inPin = 7; // choose the input pin (for a pushbutton)
でインプットピンの番号を指定し、
digitalRead(inPin); // read input value
でインプットピンからのデジタル値を取得します。
デジタルインプットなので「HIGH」か「LOW」で値が返ってきます。
感覚的にはスイッチを押すと値がHIGHになりそうなものですが、スイッチがオフの状態で「val == HIGH」になります。その理由は、スイッチを押していない状態でDigital7番ピンが電源(5V)側につながっているからです。
![]()
スイッチを押すとDigital7番ピンはGndにつながります。
■アップロードと実行テスト
Arduinoのリセットスイッチを押して、その直後にUpload to I/O Boardボタンを押しましょう。(これまでのやり方と同じです。)
スイッチを押すとLEDが消えます。
カウントはSerial Monitorを使って確認できます。
![]()
Arduinoは勝手にチャタリングを防止してくれるみたいなので、チャタリング防止回路をいれなくても大丈夫でした。
チャタリングとは、スイッチを押してOFFからONに以降する非常に短い時間の内に、実は何度かON/OFFが切り替わってしまっているという現象です。このチャタリングを防止する回路は抵抗2つと積層セラミックコンデンサ1個でつくれます。必要な場合はこちらなどを参考にさせてもらうと良いです。
奥出研では今期、技術のエクササイズ=テクササイズというのをやっています。
第4回の提出した課題です。
ウェブカムで色認識をして携帯から光の玉を出して、お化けをやっつけるゲームです。
設計が綺麗じゃないのでちょっとお恥ずかしいですがソースはこちらから見れます。
AS3.0で書いてるので、再生にはFlashPlayer9が必要です。
コンパイルするにはFlasy 9 Public alphaが必要です。
