2021年4月19日 星期一

[ESP32-CAM] 使用 ESP32-CAM 開發板檢查伺服馬達(舵機)與設定角度

 ESP32 系開發板與 Arduino 系開發板對於伺服馬達在程式撰寫上有所差異,ESP32 系開發板會稍微麻煩一些,但只要有程式庫,一切都會變簡單。


下載程式庫

Step1 在 Arduino IDE 裡點擊下拉功能表 [工具] > [管理程式庫...]。


Step2 在文書欄位內鍵入「ESP32Servo」,然後安裝 ESP32Servo 程式庫。


上傳程式

打開範例程式「Sweep.ino」或開啟程式「ESP32CAM_Servo.ino」並上傳。


ESP32CAM_Servo.ino

//ESP32CAM_Servo.ino by Robot Wolf Group

#include <ESP32Servo.h>


Servo myservo1, myservo2;

#define servoPin1 2  //Angle 90

#define servoPin2 13 //Sweep


void setup() {

  // Allow allocation of all timers

  ESP32PWM::allocateTimer(0);

  ESP32PWM::allocateTimer(1);

  ESP32PWM::allocateTimer(2);

  ESP32PWM::allocateTimer(3);

  

  // using default min/max of 1000us and 2000us

  // different servos may require different min/max settings

  myservo1.setPeriodHertz(50);    // standard 50 hz servo

  myservo1.attach(servoPin1, 1000, 2000); // attaches the servo to the servo object

  myservo1.write(90); 

  

  // for an accurate 0 to 180 sweep  

  myservo2.setPeriodHertz(50);

  myservo2.attach(servoPin2, 1000, 2000);

}


void loop() {

  for (int pos = 0; pos <= 180; pos += 5) { // goes from 0 degrees to 180 degrees

    // in steps of 1 degree

    myservo2.write(pos);    // tell servo to go to position in variable 'pos'

    delay(15);             // waits 15ms for the servo to reach the position

  }

  for (int pos = 180; pos >= 0; pos -= 5) { // goes from 180 degrees to 0 degrees

    myservo2.write(pos);    // tell servo to go to position in variable 'pos'

    delay(15);             // waits 15ms for the servo to reach the position

  }

}


電路接線

GPIO2 可以將伺服馬達設定為 90 度,

GPIO13 可以檢查伺服馬達是否正常轉動。

依照您的需求,將伺服馬達 S 端分別連接 GPIO2 或 GPIO13,然後伺服馬達 V 和 G 端接外部電源 5V 和 Gnd。

不要忘了,也需要從 ESP32-CAM 開發板的 Gnd 拉一條線連到外部電源的 Gnd。

上述如果拉線困難,可以使用麵包板。


採購資訊

ESP32-CAM 雙軸人體偵測器(豪華版)套件 http://pizgchen.blogspot.com/2021/04/esp32-cam.html


沒有留言:

張貼留言