arduino esp8266 舵機控制
舵機的控制:
舵機的控制一般需要一個20ms左右的時基脈沖,該脈沖的高電平部分一般為0.5ms~2.5ms范圍內的角度控制脈沖部分。以180度角度伺服為例,那么對應的控制關系是這樣的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
這只是一種參考數值,具體的參數,請參見舵機的技術參數。
電路連接
這里要提別注意舵機應單獨供電或者使用TTL 5V供電,不可使用ESP8266的Micro USB口供電,否則舵機無法正常運行.
舵機接線說明:
棕色:GND
紅色:VCC
黃色:PWM信號線

線路連接:
紅線連接vv
棕色連接G
黃色連接D4
請注意我們這邊用到了servo庫,請下載servo庫后上傳運行,否則會報錯。
關于servo庫詳情,可以看這個Arduino servo庫函數說明(舵機函數庫)_arduino的servo函數-CSDN博客
以下是測試代碼:
#include <Servo.h> // 調用舵機庫 Servo myservoD4; // 定義舵機對象 void setup() { myservoD4.attach(D4); // 綁定需要控制的數字引腳對應ESP8266IO口D4 } void loop() { myservoD4.write(0); // 控制舵機轉動角度,參數是角度信息 delay(1000); // 延時1000毫秒 myservoD4.write(90); delay(1000); // 延時1000毫秒 myservoD4.write(180); delay(1000); // 延時1000毫秒 }
參考:Arduino ESP8266控制SG90舵機輸出PWM信號_esp8266 pwm-CSDN博客
手動實現 PWM 控制舵機
delay() 控制頻率
void setup() { // put your setup code here, to run once: pinMode(D4, OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite(D4, HIGH); delay(2); digitalWrite(D4, LOW); delay(20 - 2); }
通過 delayMicroseconds() 手動實現頻率可調的 PWM,也被稱作數字IO輪轉法,使用方法:
兩次的digitalWrite輸出狀態必須相反;
可以用delay()實現毫秒級延遲,用delayMicroseconds()實現微秒級延遲。
void setup() { // put your setup code here, to run once: pinMode(D4, OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite(D4, HIGH); delayMicroseconds(1000); digitalWrite(D4, LOW); delayMicroseconds(20000 - 1000); }
參考: 第42期《Arduino入門》善假篇 05:舵機的PWM控制原理_嗶哩嗶哩_bilibili

浙公網安備 33010602011771號