まずは、サーボモーターを制御するためのライブラリー(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