#include <Arduino.h>
// 舵機通道
int channel_PWM = 3;?
// 舵機頻率泻骤,那么周期也就是1/50界酒,也就是20ms 珊肃,PWM一共有16個通道纽什,0-7位高速通道由80Mhz時鐘驅(qū)動降盹,后面8個為低速通道由1Mhz時鐘驅(qū)動
int freq_PWM = 50;?
// PWM分辨率与柑,取值為 0-20 之間? ,這里填寫為10蓄坏,那么后面的ledcWrite 這個里面填寫的pwm值就在 0 - 2的10次方 之間 也就是 0-1024 价捧,如果是要求不高的東西你可以直接拿1000去算了
int resolution_PWM = 10;?
// 綁定的IO,在下面的綁定函數(shù)里面會用到涡戳,綁定之后這個IO就會變成我們PWM的輸出口
const int PWM_Pin = 4;? //指定pwm綁定到這個io上輸出
void setup() {
? Serial.begin(115200);
? ledcSetup(channel_PWM, freq_PWM, resolution_PWM); // 設(shè)置舵機通道
? ledcAttachPin(PWM_Pin, channel_PWM);? //將 LEDC 通道綁定到指定 IO 口上以實現(xiàn)輸出
}
void get_pwm_info()
{
? Serial.println("*******************************************************************");
? Serial.print("讀取指定通道占空比的值為:");
? Serial.println(ledcRead(channel_PWM));? //讀取指定通道占空比的值
? Serial.print("讀取指定通道頻率的值為:");
? Serial.println(ledcReadFreq(channel_PWM));? //返回指定通道當(dāng)前頻率(如果當(dāng)前占空比為0 則該方法返回0)
}
void loop() {
? ledcWrite(channel_PWM, 52);? //20ms高電平為1ms左右 结蟋,也就是1/20*1024,此時360度舵機正傳最快
? get_pwm_info();? //打印信息妹蔽,點擊IDE右上角的串口查看器就可以看到打印的內(nèi)容了
? delay(5000);
? ledcWrite(channel_PWM, 77);? //20ms高電平為1.5ms左右 椎眯,也就是1.5/20*1024挠将,此時360度舵機幾乎停轉(zhuǎn)
? get_pwm_info();
? delay(5000);
? ledcWrite(channel_PWM, 102);? //20ms高電平為2ms左右 ,也就是2/20*1024编整,此時360度舵機反轉(zhuǎn)最快
? get_pwm_info();
? delay(5000);
? //ledcDetachPin(PWM_Pin);? //這個是解除IO口的pwm輸出功能模式
}
————————————————
版權(quán)聲明:本文為CSDN博主「bird1999625」的原創(chuàng)文章舔稀,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明掌测。
原文鏈接:https://blog.csdn.net/ailta/article/details/106537037