これからどんどん作品を作るゼミ生のみなさま
今回よく聞く「センサーが反応しない!」について解決法をご紹介します。
確認する項目はこの順番です。
1.値がきてるかprintlnで確認
2.センサーのつなぎ方があってるか
3.ArduinoにStandardFirmata入ってるか
4.57600や9600があってるか
5.arduino = new Arduino(this,Arduino.list()[0]);
6.パソコンがArduinoを認識していない
7.ライブラリが入ってない
それでは各項目について、詳しく説明いたします。
とりあえず、Processingでセンサー使って四角の大きさを変えるプログラムを書いておきます。
import processing.serial.*;
import cc.arduino.*;
Arduino arduino;
int pin = 0;
int rect_size = 0;
void setup() {
size(600, 600);
println(Arduino.list());
arduino = new Arduino(this,Arduino.list()[0]);
}
void draw() {
update_arduino();
rect(10, 10, rect_size, rect_size);
println(rect_size);
}
void update_arduino(){
rect_size = arduino.analogRead(pin);
}
それでは順に解説していきます。
1.値がきてるかprintlnで確認まずセンサーの値がきちんと来ているかどうか確認しましょう。
println(rect_size);
でセンサーからの値がProcessingのプログラム下部(黒いとこ)に数値が出てきます。
ちなみにrect_sizeはあくまで例なので、センサーの値を読み取る部分が
val = arduino.analogRead(pin);
とかだったら
println(val);
ですよ。言うまでもないですが。
センサー動かしてもこの数字が全く変化がない場合、以降の問題を解決する必要があると思われます。
2.センサーのつなぎ方があってるかよくある間違いは「センサーのつなぎ方」です。
教わったとおりにつながっているか確認してください。
もし間違えると致命的な故障を引き起こす可能性があります。大抵その前にMac側がシャットダウンしてくれますけどね…。
Arduinoやセンサーが熱くなってるかもしれないので注意しましょう。
直してもできないときは、Arduinoを認識しているか確認しましょう。
USBを抜き差しすれば大丈夫だと思います。
3.ArduinoにStandardFirmata入ってるかこれもよく見ます。
棚から出したArduino全てにこのプログラムが入っているとは限りません!「前は反応してたのに、反応しない…。」という時にはこれが多いです。
4.57600や9600があってるか多くの方はStandardFirmataを入れる時に
Firmata.begin(57600);
を
Firmata.begin(9600);
に変えましょう、と言われています。
中にはそのままUploadしてる人もいますが、まあそれでも大丈夫でしょう。
ただ、Processing側で
arduino = new Arduino(this,Arduino.list()[0],
57600);
もしくは
arduino = new Arduino(this,Arduino.list()[0],
9600);
と数値を設定している人は、きちんと合わせないとダメだと思います。
後ろの数字は実はいらなかったりすることもある。
5.arduino = new Arduino(this,Arduino.list()[0]);ここまでやってできなかった人は少し特殊な環境のPCをお使いのようです。
とりあえずsetupの中に
println(Arduino.list());
を入れてください。
これでRunすると下部の黒いところに接続ポート番号が出てきます。
[0] "/dev/tty.○○○○○○"
[1] "/dev/cu.○○○○○○"
[2] "/dev/tty.Bluetooth-Modem"
[3] "/dev/cu.Bluetooth-Modem"
[4] "/dev/tty.Bluetooth-PDA-Sync"
[5] "/dev/cu.Bluetooth-PDA-Sync"
こんな感じに出なくてもいいです。
ここからArduinoのポート番号を見つけます。
Arduino UNOもしくはMEGA 2560だと
"/dev/tty.usbmodemfd[数字]"
Arduino Duemilanoveとかだと
"/dev/tty.usbserial-[ID]"
がArduinoのポート番号になります。
このポート番号の横の番号を
arduino = new Arduino(this,Arduino.list()
[0]);
の[0]と入れ替えてやってください
「起動毎に変わるからめんどくせぇ」と思う方は、
arduino = new Arduino(this,"ポート番号");
にすれば指定のポート番号に接続してくれます。
6.パソコンがArduinoを認識しているか上記の2でショートを起こしてる場合があります。
もう一度USBを抜き差ししてください。
また大抵のMacなら勝手に認識しますが、Windowsや古いArduinoだとそうでない場合があります。
そういう時は、面倒なので先輩や先生に聞きましょう。学校のWindowsならMac使え!
Googleで検索するのもひとつのお勉強ですよ。(検索ワード:arduino ftdi ドライバ)
7.ライブラリが入っているかこれは別にセンサーやプログラムの問題ではないですが…。
学校のMacなら大抵入ってます。自分のパソコンだと入ってないかもしれません。
(最近のProcessingなら元から入ってる?)
1.
http://arduino.cc/en/Main/Software(間違ってました)
http://www.arduino.cc/playground/interfacing/processing でライブラリをダウンロード
2.書類のProcessingのフォルダにlibrariesフォルダを作って、先ほどのファイルを解凍したフォルダを入れる
これについては少し詳細にした記事があります。
なにかあれば、また聞いてください。
文責:目次護
tag:
[Arduino][Processing]
テーマ : ゼミ
ジャンル : 学校・教育