0

Wiring – A/Dコンバータで距離センサ

ANALOG_IN0に接続した距離センサ(GP2D12)の値を、A/Dコンバータで読み取った。

Wiring 距離センサ

プログラム(Wiring)動画(6.7MB)

手をかざすとLEDが光り、シリアル通信で’1’を送信する。普段は’0’を送信し続けている。

最後のdelay()は100ぐらい待った方がいいかもしれない。

Wiringがすごいのは、前のエントリの作業も含めて触り始めてから1時間ぐらいでここまでできてしまう事。プログラム全然書かないで動いてしまう。

それと、0番ピンにLEDを外付けして光らせているが、48番ピンが基盤上のLEDになっている。これからはそっちを使おう。

1

Wiring – デジタル入出力、シリアル通信、Proce55ingと連携

昨日はWiringのソフトをインストールしたので続き。

■Wiring I/O Boardのドライバのインストール

WiringをUSBケーブルでPCに接続すると、ドライバのインストールを要求されるのでFTDI社のVirtual COM Port DriverのWindowsXP用 1.0.2154をインストール。最新版は何故かインストールできなかった。

インストールすると、Wiringの基盤が仮想COMポートになる。

Wiringのメニューの[Tools]→[Serial Port]でCOM10が増えていたので、それを選択する。

wiring-com10

■プログラムの書き込みと実行

Proce55ingと同じく、メニューの[File]→[Sketchbook]→[Examples]

で適当なサンプルコードを開く。[led_blink]がいい。基盤上のLEDが点滅する。

Verifyボタンを押してプログラムが間違ってないか確かめる。

I/Oボード上のリセットボタンを押してから、Verifyボタンのある列の右から2番目のUpload to I/O Boardを押して書き込む。

書き込み終ったらI/Oボード上のリセットボタンをもう一度押す。

しばらく待つ(5秒以上かかる)と、動き出す。

左から順に、Verify、Stop、New、Open、Save、Upload to I/O Board、Serial Monitor

■Wiringのプログラム – デジタル出力(LED)、デジタル入力(スイッチ)、proce55ingへのシリアル通信

Wiring LED switchWiring Proce55ing

プログラム(Wiring)動画(6MB)

PIN0にLEDを直接接続、PIN1にスイッチを接続。スイッチの回路はWiringのサイトにあったものそのまま。抵抗は10kΩ。

基本的にLED点滅。スイッチの入力がある時はずっとLED点灯。

LEDが点いている時は’1’を、消えている時は’0’をシリアル出力する。

■Proce55ingのプログラム – Wiringからのシリアル通信の受信

サンプルを改造するだけで簡単にできる。

メニューの[File]→[Sketchbook]→[Examples]→[Library-Serial]→[BinaryInput]を開き、

36行目を

port = new Serial(this, Serial.list()[0], 19200);

から

port = new Serial(this, “COM10”, 9600);

に直す。COM10の所は適宜変える。

proce55ing-serial

実行する。これはシリアルポートから’0’が来ると円が小さく、’1’がくると円が大きくなる。

0

Wiringでできること

今ボードが手元にないけど、インストールしてライブラリとsketchを眺めて、Wiringでできる事をまとめてみた。

ちなみにこれがボード

Wiring I/O Board

Wiring 1.0 _ALPHA_ >> Download

Windows、Mac、Linux版がある。俺はWindowsXPなのでWindows版Wiring0005 ALPHAをDLして、解凍。

解凍したらwiring0005というディレクトリができるので、その中のwiring.exeから起動できる。

proce55ingと同じくsketchに大量のサンプルがある。

リファレンスとスケッチを見たかんじ滅茶苦茶簡単っぽい。phidgetsとどっちが簡単なのかな?

processingと同じく、起動時にsetup()関数が実行され、次にloop()関数が無限ループする。draw()は無い。

processingとはシリアルポートで通信して連携させるらしい。まとめてコードが書けると思ったのでちょっと残念。

その代わり、プログラムを書き込めばPCからI/Oボードを切り離しても動かせる。ここら辺の、単独で動かせるかPCと繋いだままにするかというのは重要になると思う。

サーボとか使わないならUSBバスパワーでPC側から給電してやるのが楽らしい。

もっと電力が必要なら、別の口から7~15Vを給電できる

I/Oボードに乗っているのがAVRのATMEGA128なので、それの機能が使える。→翻訳版データシート

でもデータシート読む必要は全くない。

だいたい今実装されてる機能はこれぐらい。

■デジタル入出力

void pinMode(ピン番号, OUTPUT) もしくはINPUTで入出力設定

void digitalWrite(ピン番号, HIGH) もしくはLOWでデジタル出力。LEDを光らせたり

boolean digitalRead(ピン番号) デジタル入力の有無がわかる

あとPIN8個の集合としてPORTも使える。

portMode()、portWrite()、portRead()など。でもあまり使わないだろう。

■パルスを読む

pulseIn();

いまいちよくわからない。

■シリアル通信

Serial.begin(9600);

printMode(SERIAL);

Serial.write(数値);

でI/Oボードからシリアルポートに送信できる。proce55ingとはこれで通信するらしい。

■A/Dコンバータでアナログ入力

int analogRead(0);

でアナログ値が返ってくる。センサーが使える。

■PWMでアナログ出力

実際は凄い速度でON/OFFを切り替えている疑似アナログ出力。

analogWrite(ピン番号、どのぐらい出すか);

まだ実装されていないが、これとは別にPulse Generationというのがあって周期などを指定してpulseRun()すると信号が出せるらしい。

AVRでやると結構計算が面倒臭かったが、これ楽そう。

■LCD

beginDisplay();

printMode(DISPLAY);

print(“文字”);

でLCDに文字が出せる

■サーボモータ

サーボモータも使える。どんなサーボか知らないけど。

Servo servo;

servo.attach(ピン番号);

servo.write(角度);

delay(時間); // ちょっと待つ

割り込みが無いのだが今後実装されるのかだろうか?

そのうち暇を見て試してみる。

ちょっとプログラムが楽になったUSBで書き込めるAVRマイコンといった所だけど、I/Oボードが標準化されているのはblogに書いて情報共有したりする時にほんの少しだけ意味がある気がする。

基盤に乗っているのがATmega128+クリスタル16MHz+FT232BM(USBのIC)というのは、入手製と性能のバランスが結構いいと思う。この仕様のまま2年ぐらい現役でいけるんじゃないか?

0

Wiring

Wiring I/O Boardを買ったのでそろそろ触ってみたい。

Wiring

Proce55ingで電子工作できる

InstantSOUP

FlashでWiring

Arduino

Wiringの互換ボード。回路図が公開されてるので自分で作るのもアリかもしれない

wiringからの電子工作

日本人でwiringやってる人ついに発見

0

proce55ingでダイナミックデザイン課題

やった。

processingにさわるのはこれで2回目。

「実際の絵の具と紙では実現できないような絵を描画せよ」という課題。