robo8080のブログ

ロボット製作や電子工作など。

RCサーボモータをArduinoとProcessingでGUI制御(その2) 【Processing編】

2010年10月03日 | 電子工作

【概要】

PC(Processing)からシリアル通信でコマンドを送信して、Arduino側でRCサーボモータを制御する。

ここを参考にさせてもらった。 http://www.eleki-jack.com/FC/2010/07/gainerpepper17.html
参考にさせてもらったのはGainer用なので、シリアル通信処理を追加してArduino側のサーボを制御出来るようにした。

Arduino側のプログラムはこちらを参照してください。(2012.3.11追記)

【画面】

  

準備】

ControlP5というGUIのライブラリを使用しているので、事前にインストールしておく必要がある。
ダウンロード&インストール方法はこちら。 http://www.sojamo.de/libraries/controlP5/

【Processingのプログラム

注意1:使用するCOMポートは環境に合わせて変更する必要がある。
注意2:ControlP5のバージョンUP等の影響により、このプログラムのままでは動かない可能性もあります。(2012.3.11追記)

/*
 * Servo Controler
 */

import controlP5.*;
import processing.serial.*;

ControlP5 controlP5;
Serial myPort;  // Create object from Serial class

int[] cmd1 = {255,0,4,0,90,90,90};
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, 180, 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(90);
  }
  println(Serial.list());
  String portName = Serial.list()[0]; //使用するCOMポートは環境に合わせて変更する必要がある。

  myPort = new Serial(this, portName, 9600);
  init = true;
}

void draw() {
  background(100);
}

void servoCmd() {
  if(!init) return;
  for(int i = 0; i < 7; i++) {
    myPort.write((byte)cmd1[i]);
  }
}

void servo0(int value) {
  cmd1[4] = value;
  servoCmd();
}
void servo1(int value) {
  cmd1[5] = value;
  servoCmd();
}
void servo2(int value) {
  cmd1[6] = value;
  servoCmd();
}


最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
Arduino側にもソフトが必要ですね (大王怒)
2012-03-10 23:21:35
動作確認したところ、バグってました。
返信する
Re:Arduino側にもソフトが必要ですね (robo8080)
2012-03-11 11:20:51
大王怒さん、ご指摘ありがとうございます。
ブログエディタの不具合の為、Arduino側ソースコードの一部が欠落していました。
修正しました。
また、Processing側のコードもControlP5のバージョンUPの影響で、このままでは動かない可能性があります。
現在動作確認する環境が手元に無いため未対応です。
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。