1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Arduino実習編 その1 サーボモーターの使い方

Posted at

宮崎県立都城工業高等学校 ロボット競技部はJLCPCBのスポンサーを受けています。

JLCPCB-logo.png

PCB発注ならJLCPCB!! 最近需要が高まっている多層(6層など)PCB作成も出来ます。
現在たった2ドルで5枚、2層、サイズ 10cmx10cmどの色のPCBでもJLCPCBで発注できます!
新規ユーザーは$60クーポンを獲得できるそうです。この機会に発注してみてはいかがですか?

英語発注システム
https://jlcpcb.com/JPV/
日本語発注システム
https://jlcpcb.com/jp/

サーボモーターとは何か

サーボモーターとは、一般的なDCモーターとは違い、

  • 任意の角度まで動作させることができる。
  • 電圧をかけただけでは、動かない
  • 0度から180度、又は360度までしか動かない

など色々とあります。

準備する物

  • ArduinoUno or Mega2560
  • サーボモーター(今回はGWS S03T 2BB)
  • ピン メス to メス

IMG_20240918_212332.jpg

配線

黒 = GND
赤 = VCC +5V
黄 = デジタルピン(3)

IMG_20240918_212358.jpg

IMG_20240918_212443.jpg

ArduinoのPWM制御でサーボモーターを動かす方法

早速ですが、ArduinoのPWM制御を使って、サーボモーターを動作させて行きたいと思います。

動作させるには、Arduinoの標準ライブラリで入っているServo.hを使います。(のちに回転速度を変えられるライブラリ Var Spped Servoも紹介します)

Servo.h

#include <Servo.h>

Servo myServo;  // サーボモーターのオブジェクトを作成

void setup() {
  myServo.attach(3);  // サーボモーターをデジタルピン9に接続
}

void loop() {
  // 180度から0度に移動
    myServo.write(180);
  delay(1000);  // 1秒停止
  
  // 0度から180度に移動
    myServo.write(0);
  delay(1000);  // 1秒停止
}
#include <Servo.h>

Arduinoでサーボモーターを簡単に制御するために使用される「Servoライブラリ」をプログラムに読み込むためのコードです

サーボモーターを制御するための「道具箱」をプログラムに持ち込むようなものです。道具箱があれば、必要な道具(サーボモーターを動かす機能)を取り出して使える、というわけなのです。

Servo myServo;  // サーボモーターのオブジェクトを作成

Servo myServo; と書くことで、myServoというサーボモーターを操作するための変数が作られます。この変数を使って、サーボモーターに命令を送ります。たとえば、「特定の角度に動かす」や「サーボを初期化する」といった操作を、このmyServoを通じて行います。

void setup() {
  myServo.attach(3);  // サーボモーターをデジタルピン9に接続
}

**myServo.attach(3);**は、先ほど作成したサーボモーターのオブジェクト myServo を、Arduinoのデジタルピン3に接続するための命令です。これによって、Arduinoのデジタルピン3に物理的に接続されたサーボモーターを制御できるようになります。

void loop() {
  // 180度から0度に移動
    myServo.write(180);
  delay(1000);  // 1秒停止
  
  // 0度から180度に移動
    myServo.write(0);
  delay(1000);  // 1秒停止
}
  1. void loop() とは?
    loop()関数は、Arduinoプログラムの「メインループ」にあたる部分です。プログラムがスタートした後、ここに書かれたコードがずっと繰り返し実行されます。
  2. myServo.write(180);
    この命令は、サーボモーターを180度の位置に移動させるものです。myServoは前に作成したサーボモーターのオブジェクトで、write(角度)で指定された角度にモーターを移動させます。
    180度に設定することで、サーボモーターが最大の位置(180度)まで回転します。
  3. delay(1000);
    delay(1000)は、1000ミリ秒(1秒)だけ動作を一時停止する命令です。サーボモーターが180度まで移動した後、このdelay命令により1秒間停止します。
  4. myServo.write(0);
    ここでは、サーボモーターを0度の位置に移動させています。つまり、サーボモーターが180度から反対方向の0度まで回転します。
  5. delay(1000);
    サーボモーターが0度に到達した後、もう一度1秒間停止します。

どう動くか

最初に180度までサーボモーターを回転させ、1秒間停止します。
その後、0度まで反転し、再度1秒停止します。
この動作を永遠に繰り返します。

コードをArduinoに書き込ん、動作してる映像になります。

みやざきテクノフェア(2024/11/8,11/9開催) という大会に向けて、機体の設計をしており、サーボモーターもたくさん使っているので、ロボットの動作などはみやざきテクノフェアで見ることができます。とてもロマンのある機体を皆さんに見せられたらと思っています。お楽しみに。ここまでご覧いただきありがとうございました。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?