【概要】
PC(Processing)からLAN(TCP)通信でコマンドを送信して、mbed側でRCサーボモータを制御する。
ここを参考にさせてもらった。
参考にさせてもらったのはGainer用なので、TCP通信処理を追加してmbed側のサーボを制御出来るようにした。
mbed側のプログラムは(その1)を参照してください。
【画面】
【準備】
ControlP5というGUIのライブラリを使用しているので、事前にインストールしておく必要がある。
ダウンロード&インストール方法はこちら。 http://www.sojamo.de/libraries/controlP5/
【Processingのプログラム】
注意1:使用するIPアドレス、ポートNo.は使用する環境に合わせて変更してください。
注意2:異常処理は手抜きしているので必要に応じて追加してください。
//---------ここから-----------------------------------------------
/*
* Servo Controler
*/
import controlP5.*;
import processing.net.*;
ControlP5 controlP5;
Client myClient;
int[] cmd1 = {255,0,4,0,128,128,128};
boolean init = false;
void setup() {
size(290,290);
Textlabel title;
controlP5 = new ControlP5(this);
title = controlP5.addTextlabel("title", "Servo Controller",10,10);
title.setHeight(30);
title.setWidth(400);
title.setFont(ControlP5.synt24);
// create sliders
for (int i = 0 ; i < 3 ; i++ ) {
// add a vertical slider
controlP5.addSlider("servo" + i, 0, 255, 90, (50 + i * 80), 60, 10, 181);
Slider ss = (Slider)controlP5.controller("servo" + i);
ss.setNumberOfTickMarks(7);
ss.setSliderMode(Slider.FLEXIBLE);
ss.snapToTickMarks(false);
ss.setValue(128);
}
myClient = new Client(this, "192.168.0.100", 10002);
init = true;
}
void draw() {
background(100);
}
void servoCmd(int[] data)
{
if(!init) return;
for(int i = 0; i < data.length; i++)
{
myClient.write((byte)data[i]);
}
}
void servo0(int value) {
cmd1[4] = value;
servoCmd(cmd1);
}
void servo1(int value) {
cmd1[5] = value;
servoCmd(cmd1);
}
void servo2(int value) {
cmd1[6] = value;
servoCmd(cmd1);
}
//---------ここまで-----------------------------------------------
動画はこちら。
mbedにTCPで接続してRCサーボモータを動かしてみた。
―【応用例編】にづづく...―