サーボモーターを任意の角度に移動するようにコード組んでみました。
サンプルコードを晒しますので、ご参照ください。
シリアルモニタの入力欄にカーソル合わせて、テンキー+エンターキーで数値入力すると、その値の角度にサーボが動きます。
ESP32でサーボモータを回す方法
以下、参考まで、使い方と私の適当なソースを晒しておきます。
esp32servoというライブラリを使うので、インクルードしましょう。
ライブラリを管理 から実施します。
検索窓でesp32servoを探して、該当したライブラリ名にカーソル合わせると「インストール」ボタンが現れるので、クリックすればインストール完了です。
コードをコンパイルして、ESP32アップしたら、シリアルモニタを開いて準備完了です。
シリアルモニタから角度を入力すればサーボが反応するはずです。
コードはこんな感じです。
#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);
}
}
}
なお、SG-90(の互換品)では 茶:GND、赤:+5V、橙:信号線(今回はport16にしました) です。
で、上でSG-90互換と書きましたが、私は下記を使ってます。
シビアな用途ではわかりませんが、まぁこれでいいかな。という感じです。
国内配送だと、1個200~300円が相場かなぁと思います。
以上。ご参考になれば幸いです。
それでは!