今までの連載:
「5188円で始めるフィジカルコンピューティング 第1回 〜テルミンつくってみるミン イントロの巻〜」
「5188円で始めるフィジカルコンピューティング 第2回 〜テルミンつくってみるミン 動けArduinoさん!の巻〜 」
第3回です。今回は予告通りセンサの使い方です。使用するのは、シャープさん製の「赤外線近接センサGP2Y0A21YK」、電波な世界では有名みたいです。
090521_Arduino02 posted by (C)karaage
Arduinoさんと接続するためコネクタの横側をハサミかニッパで切ってやりましょう。その後、「ピン配列交換ケーブル」をつないでやります。そうすると下の写真みたいになります。向かって右から電源(5V)、GND、センサ出力になります。もし知らない部品を使うときは、たいていネットで型番を調べるとデータシートが出てくるいい時代になったのでわからないときは自分で調べるようにしましょう。
090521_Arduino03 posted by (C)karaage
こんな感じになります。ケーブルの色を、電源を赤、GNDを黒or緑、信号を白or黄とかルールを決めておくと間違いが減ります。
ピンがつけれたら、センサの電源をArduinoのPowerという端子列の5V,GNDはPower端子列のGND、センサの信号をArduinoのAnalog端子列の2ピンに繋いでやりましょう。なんとこれだけでセンサとArduinoの接続が完了してしまいました。接続できたら、おもむろにArduinoのソフト環境を立ち上げ、File→Sketchbook→Example→Analog→AnalogInputを選択し、コンパイルしてアップロードしてやりましょう。
うまくいくとこんな感じになります。わかりづらいかもしれませんが、手をセンサに近づけるとLEDの点滅がゆっくりになり、手をセンサから離すとLEDの点滅が早くなるのがわかると思います。後ろにあるWii ヌンチャクは特に意味はないです。写ってしまいました。プログラムのソースコードは下記のような感じです。コメントは日本語にしてあります。
int potPin = 2; // 2ピンを赤外線センサの入力端子に指定 int ledPin = 13; // 13ピンをLEDの出力端子に指定 int val = 0; // センサから入力された値を格納する変数 void setup() { pinMode(ledPin, OUTPUT); // 13ピンを出力端子に設定する } void loop() { val = analogRead(potPin); // 赤外線センサの値を読み取る digitalWrite(ledPin, HIGH); // LEDをON delay(val); // センサで読み取った値だけストップ digitalWrite(ledPin, LOW); // LEDをOFF delay(val); // センサで読み取った値だけストップ }
あんまりプログラムがわからない人でも、なんとなく仕組みがわかるのではないでしょうか?たった13行でセンサの入力を使ってLEDの点滅速度を制御できるようになりました。凄いですね。さて、今回のセンサと第2回のブザー出力を使って次回はいよいよテルミンっぽいものが完成する予定です。ちなみにテルミンはなんぞという方は、Wikipediaで予習しておいてください。
自分が、テルミンという楽器で面白いと思うのは、手とテルミンのアンテナとの距離で音の高さを調節できる点。音の高さの変化が非線形的な点、ピアノと違い音階が無い点の3つかなと思っているので、そこらへんを再現できるものとなります。多分結構たくさんの人が、今までの材料で自分で作れると思うので、先に作って遊んでいて下さい。