INDEX(各項目ごとの目次)

[HOME]  [Processing関係]  [Arduino関係]  [マテリアル関係]  [秋葉原工作マップ]

2008年用ですが、部分的に内容を更新しています(2010/06/14)。
また、[建築農業工作ゼミ2009-2010]とも連動していますので、そちらにも幾つかサンプルがあります。
:

12/21/2008

Processing-Arduino Firmataライブラリ

今回は、「Firmataライブラリ」のテストを行いたいと思います。
通常Processing-Arduinoの間を通信させるときにはシリアル通信を使い、Processing側のプログラムとArduino側のプログラムをそれぞれ別々に書いていましたが、「Firmataライブラリ」を使うことで、Processing側から直接Arduinoをプログラムし制御することが可能になります(パソコンにUSB接続したArduino基板をProcessing側からのプログラムだけで操作できるので便利です)。

Firmataライブラリを使うための準備:
・まずFirmataライブラリをダウンロードし、Processingのlibrariesフォルダ内にインストールします。
・Arduino-0012であればArduino用Firmataライブラリは含まれているので、メニューバーのSketchBook>Examples>Library-Firmata>StandardFirmataを開き、Arduino基板にアップロードしておきます。Arduinoのセッティングは以上です。

今回はProcessing用のFirmataライブラリに含まれているサンプルを用いたいと思います。
Processingを開いて、File>Sketchbook>libraries>arduino>examples>arduino_outputを選択します。
以下のようなプログラムが表示されるはずです。

import processing.serial.*;

import cc.arduino.*;

Arduino arduino;

color off = color(4, 79, 111);
color on = color(84, 145, 158);

int[] values = { Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW,
Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW,
Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW };

void setup() {
size(470, 200);

println(Arduino.list());
arduino = new Arduino(this, Arduino.list()[0], 115200);

for (int i = 0; i <= 13; i++)
arduino.pinMode(i, Arduino.OUTPUT);
}

void draw() {
background(off);
stroke(on);

for (int i = 0; i <= 13; i++) {
if (values[i] == Arduino.HIGH)
fill(on);
else
fill(off);

rect(420 - i * 30, 30, 20, 20);
}
}

void mousePressed()
{
int pin = (450 - mouseX) / 30;

if (values[pin] == Arduino.LOW) {
arduino.digitalWrite(pin, Arduino.HIGH);
values[pin] = Arduino.HIGH;
} else {
arduino.digitalWrite(pin, Arduino.LOW);
values[pin] = Arduino.LOW;
}
}


Processing上でこのプログラムをランさせます。この時点でProcessingから、Arduino基板の各ピンの入出力設定がなされます。Processingでは以下のような画面が現れます。



14個ならんでいる正方形をそれぞれクリックすれば(クリックするとその正方形は塗りつぶされる)、Arduinoの0番ピンから13番ピンの合計14個のピンに対応してデジタル出力されます(Processing画面上の左端の正方形がArduinoの13番ピンに対応)。試しにProcessing画面上左端の正方形をクリックすると、13番ピンに接続されたLED(基板内蔵LED)が点灯します。同様に他の正方形をクリックすれば、それに対応したピンからデジタル出力されることが確認できます(各ピンにLED+抵抗:220Ωを接続して下さい)。
ただし、0番ピンと1番ピンに関しては、Processing-Arduino間でのシリアル通信で使用されているため、クリックしても反応しないので、2番ピンから13番ピンでのデジタル出力制御となります。

Processingのプログラム上で、

arduino.pinMode(ピン番号, 入出力設定);

とすれば、Arduinoの任意のピンの入出力設定(Arduino.INPUT または Arduino.OUTPUT)を行うことができます。
出力をHIGHかLOWにするには、

arduino.digitalWrite(ピン番号, 出力値);

で、出力値をarduino.LOWかarduino.HIGHで設定します。
そのほか、

デジタル入力:arduino.digitalRead(ピン番号)
アナログ入力:arduino.analogRead(ピン番号)
アナログ出力:arduino.analogWrite(ピン番号,出力値)

という感じになるので、arduino.を頭につければ、Arduino上でのプログラムとほぼ同じです。

12/06/2008

スピーカ/音出力について

音を出力するものとしてコーンスピーカが一般的に使われますが、それ以外にも以下のようなものがあります。

・「圧電スピーカ」:パルスを送り振動させブザーのような音を鳴らす(「Arduino 圧電スピーカ」を参照)。
・「振動モータ」:偏心錘がついたモータによって振動させる(携帯電話のバイブレータなど)。
・「ソレノイド」:電磁石の力によって金属のシリンダーを往復運動させ、物体などをたたくことで音を出す。
・「パラメトリックスピーカ」:指向性スピーカ(超音波スピーカによる方向性/反射性のある音のビーム)。


・超磁歪素子という振動体を物体に接触させると、その物体がスピーカのように振動し音を出す機器として以下のようなものがあります。

どこでも伝導スピーカー ホワイト(p-0034-39)
ピーナッツクラブ
売り上げランキング: 7277

1550円

ピタッとスピーカー(ブルー)DN-A002BU
株式会社 StrapyaNext
売り上げランキング: 14047

2980円から。

何でもスピーカーGPECKER
日本電話施設株式会社
売り上げランキング: 12997

5500円。

エンティス デジタルサウンドジェネレーター Tunebug-Vibe Tunebug-vibe
エンティス (2009-12-18)
売り上げランキング: 3390

7971円。

DESIGN FACTORY どこでもスピーカー
㈱デザインファクトリー
売り上げランキング: 13234

4280円。

NIMZY VIBRO BLASTER SILVER
NIMZY VIBRO BLASTER SILVER
posted with amazlet at 09.07.29
海連 (2006-10-31)
売り上げランキング: 42650



デバイスネット ヨロズオーディオ DN-A001
デバイスネット (2008-12-05)
売り上げランキング: 19195

5577円。



また、音の入力装置(通常のマイク以外)として「ギター用ピックアップ」のように金属弦の振動を磁気的に拾いとる部品もあります。


あるいは磁気テープを読み取る場合、以下のような製品のヘッド部分を取り出して利用することもできます。
カセットテープヘッドについてのまとめ。

680円。
以下は改造例。


[目次:Processing関係]  [HOMEへ戻る]  [目次:Arduino関係]