實驗說明:
- 伺服馬達的轉動的角度是通過調節PWM(脈衝寬度調製)信號的實現來實現的,標準PWM(脈衝寬度調製)信號的周期固定為20ms(50Hz),理論上脈寬分佈應在1ms到 2ms之間,但是,實際上脈寬預期0.5ms到2.5ms之間,脈寬和舵機的轉角0°〜180°相對應。有一點不會的地方,由於舵機牌子不同,對於同一信號 ,不同牌子的舵機旋轉的角度也會有所不同。
- ESP32的驅動能力有限,所以當需要控制1個以上的舵機時建議加上馬達擴展板。
- 另外各位在選購伺服馬達舵機時務必注意,同種型號會有2種規格
- 180度:標準舵機(可控制角度)
- 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運轉。