ESP32, IOT物聯網

【IOT物聯網應用-ESP32】第三十二篇:控制SG90 Servo伺服馬達

實驗說明:

  • 伺服馬達的轉動的角度是通過調節PWM(脈衝寬度調製)信號的實現來實現的,標準PWM(脈衝寬度調製)信號的周期固定為20ms(50Hz),理論上脈寬分佈應在1ms到 2ms之間,但是,實際上脈寬預期0.5ms到2.5ms之間,脈寬和舵機的轉角0°〜180°相對應。有一點不會的地方,由於舵機牌子不同,對於同一信號 ,不同牌子的舵機旋轉的角度也會有所不同。
  • ESP32的驅動能力有限,所以當需要控制1個以上的舵機時建議加上馬達擴展板。

  • 另外各位在選購伺服馬達舵機時務必注意,同種型號會有2種規格
  1. 180度:標準舵機(可控制角度)
  2.  360度:連續旋轉舵機(不可控制角度)

 

材料:

  • ESP32-E DevKit
  • USB 傳輸線
  • 伺服馬達(180度)
  • 麵包板
  • 麵包板跳線

▼ 購買IoT物聯網學習教材:

 

安裝 ServoESP32 程式庫:

  • 在 Arduino 整合環境功能表點選 草稿碼 / 匯入程式庫 / 管理程式庫。
  • 在右上方搜尋框輸入「ServoESP32」,下方會列出所有符合條件的程式庫,不同程式庫使用的程式碼並不相同。此處點   選「ServoESP32」,該項目右下角會出現「安裝」鈕,按「安裝」鈕開始安裝。

 

程式:

#include <Servo.h> 
 
Servo myservo;
int servoPin=16;
 
int pos = 0;    // 定義舵機轉動位置
 
void setup()
{
      myservo.attach(servoPin);  // 設置舵機控制腳位
}
 
void loop()
{
     // 0到180旋轉舵機,每次延時15毫秒
      for(pos = 0; pos < 180; pos += 1) { 
         myservo.write(pos); 
         delay(15); 
      } 
      // 180到0旋轉舵機,每次延時15毫秒 
      for(pos = 180; pos>=1; pos-=1)
      {                               
        myservo.write(pos);
        delay(15);
      }
}

將程式碼上傳到Arduino後,可以看到,舵機開始先按0到180運轉,然後再從180到0運轉。

 

 

相關文章