▼Arduino-ESP32「03:サーボモーター制御」

まずは、サーボモーターを制御するためのライブラリー(ESP32 Servo)をインストールします。

それぞれの違いは、使用するサーボの制御範囲「ESP32Servo(0~180度)/ESP32Servo360(0~360°)」です。ここでは、[ESP32Servo]を選択してインストールします。

※直接ZIP形式で入手される場合は、こちらからダウンロードできます。ESP32-Arduino-Servo-LibraryのCloneをクリックして「Download ZIP」を選択。

ダウンロードしたインクルードファイルを組み込むには、[スケッチ]->[ライブラリーをインクルード]->[.ZIP形式・・]でインストールを行います。


プログラム

#include <ESP32Servo.h>
#include <stdio.h>
#include <string>

Servo myservo;
int pos = 160;
// Recommended PWM GPIO pins on the ESP32 include 2,4,12-19,21-23,25-27,32-33
int servoPin = 16;

void setup()
{
    myservo.setPeriodHertz(50);
    myservo.attach(servoPin, 400, 2400); // sg90仕様書に合わせて設定
    Serial.begin(115200);
}

void loop()
{
    String key;
    if (Serial.available())
    {
        key = Serial.readStringUntil('\n');
        Serial.println(key);
        //Serial.println("print!");
        int newAngle;
        newAngle = atoi(key.c_str());
        Serial.println(newAngle);
        if (newAngle <= 180 && newAngle >= 0)
        {
            while (pos != newAngle)
            {
                if (pos < newAngle)
                {
                    myservo.write(pos++);
                    delay(5);
                }
                else
                {
                    myservo.write(pos--);
                    delay(5);
                }
                Serial.println(pos);
            }
        }
        else
        {
            Serial.printf("Out of range [%3d]\n", newAngle);
        }
    }
}

▼サーボモーターSG90&SG92R仕様

  • SG90(低トルク)
  • 標準速度サーボモーター120度、最大速度は180度
  • 作動トルク:1.2-1.4KG /cm
  • 反応速度:0.12秒/ 60度
  • 使用温度:-30℃-60℃
  • 動作電圧:4.8V-6V
  • 茶:GND、赤:+5V、橙:信号線

  • SG92R(低中トルク)
  • PWMサイクル:20mS
  • 制御角:±約90°(180°)
  • 配線:茶=GND、赤=電源[+]、橙=制御信号 [JRタイプ]
  • トルク:2.5kgf・cm
  • 動作速度:0.1秒/60度
  • 動作電圧:4.8V
  • 温度範囲:0℃~55℃
  • 外形寸法:23×12.2x27mm
  • 重量:9g

▼操作

シリアルモニターから角度を入力してサーボをコントロール

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です