Arduino工作講座とProcessing入門講座を通して、学習してきたことを連携させる。第2弾はLEDをロッカースイッチでオンオフする。パソコンの画面に描いたロッカースイッチをマウスで操作して、LEDのオンオフを切り替えるようにする。
この講座は少し説明を省こうと思います。中級編だと思ってください。
Arduino Processing 連携 第2弾 LEDをロッカースイッチでオンオフする
Arduino Uno と パソコンをUSEケーブルで接続して、パソコン側からProcessingを利用して操作をする。Processingの描画機能でロッカースイッチを作成。

これは、Processing入門講座で作成したスイッチです。3D表示されたロッカースイッチを操作します。その動作に合わせて、内蔵LEDが点灯したり、消灯したりします。
内蔵LEDをロッカースイッチでオンオフする
Processingで用意したロッカースイッチを操作して、オンの時だけ、内蔵LEDを点灯する。オフの時は、内蔵LEDを消灯する。
シリアルポートに接続している機器が一つしかないことを前提にしているので、違う場合には、ポート番号を書き換えるようにしてください。
今回はArduino Uno とUSBケーブルをつなげるだけです。
必要となる部品
- Arduino Uno
- USBケーブル
回路と回路図


Arduino プログラム
char val; // Data received from the serial port
int ledPin = 13; // Set the pin to digital I/O 13
void setup() {
pinMode(ledPin, OUTPUT); // Set pin as OUTPUT
Serial.begin(9600); // Start serial communication at 9600 bps
}
void loop() {
if (Serial.available()) { // If data is available to read,
val = Serial.read(); // read it and store it in val
}
if (val == 'H') { // If H was received
digitalWrite(ledPin, HIGH); // turn the LED on
} else {
digitalWrite(ledPin, LOW); // Otherwise turn it OFF
}
delay(100); // Wait 100 milliseconds for next reading
}
事前にArduino Uno にプログラムを書きこんでおき、シリアル信号を受け付ける準備をしておく。
Processing プログラム
Sw Sw1 = new Sw(80,50,120,200,0);
import processing.serial.*;
Serial myPort; // Create object from Serial class
int stat;
void setup() {
size(300, 300);
Sw1.display(Sw1.st);
frameRate(10);
printArray(Serial.list());
myPort = new Serial(this, Serial.list()[0], 9600);
}
void draw(){
}
void mousePressed(){
if (Sw1.areachk() == 1)
if (Sw1.st == 0){
Sw1.st = 1;
myPort.write('H');
} else {
Sw1.st = 0;
myPort.write('L');
};
Sw1.display(Sw1.st);
}
class Sw {
int x, y, w, h, st;
Sw (int xpos, int ypos, int wsw, int hsw, int sta) {
x = xpos;
y = ypos;
w = wsw;
h = hsw;
st = sta;
}
void display(int stat){
noFill();
strokeWeight(2);
int col_top;
int col_right;
int col_bottom;
int col_left;
int col_intop;
int col_inmidup;
int col_inmidlo;
int col_inbo;
col_top = 230;
col_right = 100;
col_bottom = 80;
col_left = 190;
if(stat == 0){
col_intop = 200;
col_inmidup = 100;
col_inmidlo = 170;
col_inbo = 160;
}
else {
col_intop = 160;
col_inmidup = 170;
col_inmidlo = 200;
col_inbo = 100;
}
stroke(0, 0, 200); // center
fill(col_top);
rect(x,y,w,h);
noStroke();
fill(col_top);
quad(x-10, y-10, x+w+10, y-10, x+w, y, x, y); // top
fill(col_right);
quad(x+w, y, x+w+10, y-10, x+w+10, y+h+10, x+w, y+h); // right
fill(col_bottom);
quad(x+w, y+h, x+w+10, y+h+10, x-10, y+h+10, x, y+h); // bottom
fill(col_left);
quad(x-10, y-10, x, y, x, y+w, x-10, y+h+10); // left
fill(col_intop);
rect(x+10,y+10,w-20,15);
fill(col_inmidup);
rect(x+10,y+25,w-20,(h-20)/2);
fill(col_inmidlo);
rect(x+10,(y+h/2),w-20,(h-20)/2);
fill(col_inbo);
rect(x+10,y+h-25,w-20,15);
stroke(0);
ellipse((x+(w/2)),y+15 +(h/4),15,15);
line(x+(w/2),y+(h/2)+10,x+(w/2),y+h -30);
line(x+w-10,y+10,x+w-10,y+h-10);
line(x+10,y+h-10,x+w-10,y+h-10);
}
int areachk(){
if(mouseX > x+10 && mouseX < x+w-10 && mouseY > y+10 && mouseY < y+h-10){
return 1;
} else {
return 0;
}
}
}
事前にパソコンのProcessingにプログラムを用意しておく。シリアルポートを調べに行き、ポート番号をチェック。調べたポートにマウス情報から、情報を発信。Processingから「H」を送ると、Arduinoの方では、LEDの対応ピンを「HIGH」に。「L」を送られてくると「LOW」にします。
Processing 実行画面


ロッカースイッチを操作して、オンにすると内蔵LEDが点灯し、オフにすると内蔵LEDは消灯する。
外部LEDをロッカースイッチでオンオフする
外部LEDについては、第1弾と全く同じで対応できるので流用したいと思います。
必要となる部品
- Arduino Uno
- 赤色LED
- 220Ωの抵抗
- ブレッドボード
- ジャンパー線 赤色と黒色
回路と回路図


内部LEDの場合
int ledPin = 13; // Set the pin to digital I/O 13
外部LEDの場合 I/Oピンの対応ピン番号を指定
int ledPin = 12; // Set the pin to digital I/O 12
なんてことはない、単純にIOピンを外部LEDに接続したピン番号に変更するだけです。抵抗はいつものあれです。LEDの保護ですね。ジャンパー線は色は何色でもLEDが光ります。USBケーブルを接続してください。
電子工作では、スイッチを利用しました。Processingを利用すると、パソコンで制御することができる事ができるようになります。もちろん、他の言語でもできると思います。
今回はこの辺で。次回をお楽しみに。
コメント