Arduino講座:その3

第三回 Arduino講座

 「サーボモーターをいじる」

 

本日はArduinoを使ったサーボモータの制御について簡単に紹介したいと思います。サーボモーターとは一定の角度範囲(例えば0°~180°)の任意の角度で位置決めできるものです。DCモータなどのように回転はしません。一般にロボットの関節などに制御用として使われますが、Arduinoなどの基盤の普及に伴ってArtistなどの間でも広く使われるようになってきました。

今回はTunigy のTG9eというベーシックなものを使います。


 さっそくですが、以下のようにサーボモーターをArduinoに繋いでみます。

一般的に黒のワイヤーをArduinoのGRDへ、赤を5Vへ、青もしくは白を今回はArduinoの9番ピンに接続します。

 

接続が完了しましたら、以下を入力して動かしてみてください。

1; サーボモータを特定角度動かす

 #include <Servo.h>

Servo myservo; // create servo object to control a servo

// a maximum of eight servo objects can be created

int pos =0; // variable to store the servo position

void setup() {

myservo.attach(9); // attaches the servo on pin 9 to the servo object

}

void loop() {

myservo.write(0); // tell servo to go to position in variable ’0degree’

delay(1000); // waits 1000ms for the servo to reach the position

myservo.write(30); // tell servo to go to position in variable ’30degree’

delay(1000); // waits 1000ms for the servo to reach the position

myservo.write(60); // tell servo to go to position in variable ’60degree’

delay(1000); // waits 1000ms for the servo to reach the position

myservo.write(90); // tell servo to go to position in variable ’90degree’

delay(1000);

}

 サーボモータが一秒毎に30°ずつ動き、90°までいくと0°に戻る動きを繰り返す設定になっています。

 

 2; サーボモータを一定角度継続的に動かす

 #include <Servo.h>

Servo myservo; // create servo object to control a servo

// a maximum of eight servo objects can be created

int pos = 0; // variable to store the servo position

void setup() {

myservo.attach(9); // attaches the servo on pin 9 to the servo object

}

void loop() {

for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees

{ // in steps of 1 degree

myservo.write(pos); // tell servo to go to position in variable ‘pos’

delay(15); // waits 15ms for the servo to reach the position

}

for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees

{

myservo.write(pos); // tell servo to go to position in variable ‘pos’

delay(15); // waits 15ms for the servo to reach the position

}

}

 

こちらでは、15㍉秒ごとに1°ずつ動いていき、180°に到達すると、反対回転で0°まで戻るという動きを繰り返します。例えば delay(15); をdalay (1000);に変更すると1000㍉秒毎、つまり1秒毎に1°動くという様に変わります。

 角度/時間の制御ができるというのは、単にモーターが回転続けるというのとはまた違って面白いですね。是非試してみてください。

 

 

by Hiroshi Ito



Comments are closed.