Arduinoでのサーボモーターの基本

Arduinoボードでのサーボモーターの接続方法と制御方法を学びます。


AUTHOR: Arduino、LAST REVISION: 2022/10/05 22:00


Servoライブラリは、サーボモーター制御用の素晴らしいライブラリです。この記事では、Arduinoボードで利用できる2つの簡単な例を示します。

最初の例では、Arduinoと可変抵抗器でRC(ホビー)用サーボモーターの位置を制御します。2つ目の例では、RCサーボモータのシャフトを180度往復させます。

必要なハードウェア

  • Arduinoボード
  • サーボモーター
  • 10kΩの可変抵抗器
  • フックアップワイヤー

回路

サーボモーターは、電源、GND、信号の3線です。電源コードは通常赤で、Arduinoボードの5Vに接続します。GNDは通常黒か茶色で、ボードのGNDに接続します。信号ピンは通常黄色かオレンジ色で、ボードのPWMピンに接続します。今回の例では9番ピンです。

Knob回路

Knobの例では、可変抵抗器の両外側のピンをボードの+5VとGNDに接続し、真ん中のピンをA0に接続します。また、サーボモーターを+5VとGND、9番ピンに接続します。

Knobの回路

Knobの回路

Sweep回路

Sweepの例では、サーボモーターを+5VとGND、9番ピンに接続します。

Sweepの回路

Sweepの回路

Knob

可変抵抗を使ってサーボの位置を制御します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include <Servo.h>

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

int potpin = 0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
  val = map(val, 0, 1023, 0, 180);     // scale it to use it with the servo (value between 0 and 180)
  myservo.write(val);                  // sets the servo position according to the scaled value
  delay(15);                           // waits for the servo to get there
}

Sweep

RCサーボモータのシャフトを180度往復させます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

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 >= 0; 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
  }
}

オリジナルのページ

https://docs.arduino.cc/learn/electronics/servo-motors

最終更新日

October 23, 2022

inserted by FC2 system