Skip to content

4. SERVO

目標

  • サーボモータを制御する原理を習得する
  • マイコンからサーボモータを制御できるようになる

サーボモータの制御方法

サーボモータは信号線にPWMを入力することで制御する. PWMのパルス幅とサーボモータの角度が対応している. PWMの周期はおよそ2500usであり,使用するパルス幅は500usから2200usである.

コード解説

Servo servo;

Servoクラスのインスタンスを作成している. クラス(class)はc++の機能の1つで,c言語の構造体に似たものである. 関数と変数を1つのまとまりとして,新しい型を定義している.

servo.attach(7)

D7ピンをサーボモータに接続し使用することを設定している.

servo.writeMicroseconds(int value)

PWMのパルス幅をミリ秒単位で設定する.最大値は2500くらいのはず.

Source Code

#include <Servo.h> 

Servo servo;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  servo.attach(7);
}

void loop() {
  // put your main code here, to run repeatedly:
  static uint16_t count = 0;
  uint16_t value = (500*sin(count++/1000.0*2.0*M_PI)+1600);

  servo.writeMicroseconds(value);
  Serial.println(value);
  delay(2);
}