6 ProcessingでArduinoのLEDを制御 [Dimmer]
ArduinoボードのLEDの明るさをPCで動くProcessingからコントロールします。
Macの画面には、白から黒のグラデーションのウインドが表示されます。白の上にマウスポインタを重ねると、LEDが明るく点灯し、黒方向に移動させると徐々に暗くなり、黒の上で消灯します。
必要なハードウエア
この記事を実行するのに必要なハードウエアは、以下の通りでLEDと抵抗を Arduino に接続します。
- Arduino
- LED + 抵抗(220Ω)
- USBケーブル
- Mac
動作確認
動作確認は以下の手順で行います。
- Arduino LED と抵抗(220Ω)を取り付ける
- Arduino IDE にスケッチを書く
- Arduinoボードにスケッチ書き込む
- Processing IDE にスケッチを書く
- Processing を実行する
1. Arduino LED と抵抗を取り付ける
Arduino pin 9 に LED と抵抗(220Ω)を取り付けます。
LEDの極性を間違えないよう配線してください。
2. Arduino IDE にスケッチを書く
Arduino IDE に組み込まれているサンプルスケッチを利用します。
Arduino IDE のメニューから
ファイル -> スケッチ例 -> 4.Communicattion -> Dimmer
と選択してください。読み込まれたスケッチには、説明が多く記入され、また、Processing のプログラムコードもコメント欄に書かれているため長いスケッチになっています。
しかし、実際に Arduino に書き込まれるコードだけを取り出すと至ってシンプルな内容です。参考のために以下に掲載します。
// Dimmer
const int ledPin = 9; // LED接続ピン
void setup() {
Serial.begin(9600); // シリアル通信の初期化
pinMode(ledPin, OUTPUT); // LEDピンの初期化
}
void loop() {
byte brightness;
if (Serial.available()) { // PCからデータ受信したか
brightness = Serial.read(); // データを取得 (0-255)
analogWrite(ledPin, brightness); // LEDの明るさにセット
}
}
3. Arduinoボードにスケッチ書き込む
Arduino IDE にスケッチが読み込まれたら、➡︎ ボタンをクリックして Arduinoマイコンボードにスケッチを書き込みます。
4. Processing IDE にスケッチを書く
Arduino IDE に読み込んだスケッチの後半に、コメントとして Processing IDE 用のスケッチが書かれています。その部分をコピーして Processing IDE にペーストしても構いませんが、以下に該当部分を抜き出して英語のコメントを日本語化したスケッチを示しますので、こちらを利用してください。
// Dimmer - byteデータをシリアルポートから送信
import processing.serial.*;
Serial port;
void setup() {
size(256, 150);
println("接続されているシリアルポート:");
printArray(Serial.list());
// このスケッチでは、リストの2番目のポートを使用します。
// ユーザーがArduinoを接続している番号に置き換えてください。
// 最後のパラメータ(e.g. 9600)は通信速度を示します。
// この値は、ArduinoスケッチのSerial.begin() での設定値です。
port = new Serial(this, Serial.list()[2], 9600);
}
void draw() {
// 白から黒へのグラデーションを描く
for (int i = 0; i < 256; i++) {
stroke(i);
line(i, 0, i, 150);
}
// マウスの X-位置現在座標をシリアルポートから送信する
port.write(mouseX);
}
5. Processing を実行する
Processing IDE にスケッチを書き込んだら、▶︎ ボタンをクリックして Processingを実行します。
実行されると、Processing IDE のコンソール部に、 Maに接続されているポートの情報が表示されます。
さらに、Mac画面ほぼ中央に、白黒のグラデーションのウインドが表示されます。
白の上にマウスポインタを重ねると、Arduino pin 9 に接続した LEDが明るく点灯します。
黒方向に移動させると徐々に暗くなり、黒の上で消灯します。
[トラブルシュート] LEDがコントロールできない時
動作しない多くの理由が、Arduino 接続ポートの誤指示です。
Processing IDE のコンソール部を確認し、"/dev/cu.usbmodem14xxx" と表示されている番号、上記リストの例では [2] がスケッチの
port = new Serial(this, Serial.list()[2], 9600);
の list( ) インデックス番号と一致しているか、確認してください。
- 参考
Maに接続されているポートの情報には、/dev/cu と /dev/tty 2種類がが表示されます。歴史的に、tty (TeleTYpe)デバイスは受信、cu (Call Up)デバイスはモデムなどの送信に利用されてきた経緯があるため、2種類のデバイスが用意されています。
なお、どちらのデバイスを使用しても Arduino は正常に動作しました。
次回は、Arduinoボードで測定したアナログ入力電圧をコンピュターにシリアル送信し Processingでグラフ化するサンプルスケッチを紹介します。