ebisukeプログラミング初心者脱出黙示録

30歳を過ぎてから始めたプログラミングと競プロの記録。Pythonで取り組んでいます。Arduinoで電子工作も

初心者のArduinoプログラミング入門【サーボモータ編】

今回もArduinoでプログラミング学習をしていきます!

この記事ではサーボモータの基本的な使い方を学習します。

可変抵抗を使用してサーボモータの回転角度を制御することが目標です。

サーボモータとは

一般的なDCモータは電流を流すとくるくる回りつづけますが、サーボモータは軸の角度を制御できるモータです。

今回は安価なSG-90というサーボモータを使います。

目標

ブレッドボード、可変抵抗とサーボモータを使用して回路を作ります。

可変抵抗にあわせてサーボモータの軸を回転させることを目標としました!

回路図

f:id:ebisuke33:20210903221313p:plain

アナログ入力端子A0を可変抵抗に、デジタル3番ピンをサーボモータに接続しました。

SG-90ではモータの茶色の線をGND、赤色を5V、オレンジを制御するピンに接続します。

f:id:ebisuke33:20210903221356p:plain

上図のような回路図になります。

スケッチ

// サーボモータを動かすためのライブラリ
#include <Servo.h>

// サーボオブジェクトの宣言
Servo myServo;

void setup() {
  pinMode(3, OUTPUT);
  // サーボを接続したピン番号3を入力
  myServo.attach(3);
}

void loop() {
  int v = analogRead(0);
  // アナログ入力を0~180に変換
  v = map(v, 0, 1023, 0, 180);
  // サーボの角度を指定
  myServo.write(v);
  delay(10);
}

まずServoライブラリのインクルードを行い、サーボモータを使える状態にします。

「スケッチ」タブから「ライブラリをインクルード」→「Servo」の順で選択しました。

Servo myServoの部分でServoオブジェクトの宣言を行い、myServoがサーボモータだと決定させます。

myServo.attach(3)ではサーボモータと接続したデジタルピンの番号を書きます。

サーボモータを使用するときはPWM(~マークのある)ピンでなければならないので、ここでは3番ピンと接続しています。


アナログ端子からの入力vは最初0~1023の範囲内の整数ですが、回転角度0~180°に変換したいのでmap関数を使って変換しました。

その角度vを myServo.write(v)とすることでサーボモータの軸角度がvになるよう動作するはず!です。

動作確認


www.youtube.com

可変抵抗のつまみの回し方にあわせてサーボモータの軸を回転させることができました!

つまみの回す速さにも連動しています。

まとめ

今回は基本的なサーボモータの使い方を練習しました。

0~180°の間で好きな角度で指定してモータを回すことができるのでいろいろな電子工作に応用できますね!




この記事で使用しているArduinoは elegooというメーカの互換品です。

部品もついてきて安価なので学習用に購入しました。