先給大家講講舵機的驅動吧 , 雖然之前在stm32的博文裡面的其中一篇講pwm的博文已經講過了,但在這裡再講一遍,我們手裡的舵機模組基本都是靠時基脈衝中的占空比調節來控制的,那再具體再說的通俗一點呢?就是比如我的時基為20ms , 要求舵機轉到0度的所要求的的占空比為0.5ms , 那麼我們就需要以20ms為乙個週期 ,每個週期內的高電平時間為0.5ms(這就是占空比),然後其餘時間為低電平即可,而具體到我手上的這個360度舵機呢,說實話不建議大家使用360度舵機,因為360度舵機失去了舵機最大的優勢就是角度調節,我可以控制比如180度的舵機能夠精確轉動到哪乙個位置,但是360度舵機不行,我們只能控制他正反轉以及正反轉速度,但是控制方法十一摸一樣的,話不多說,開幹
#include
// 舵機通道
int channel_pwm =3;
// 舵機頻率,那麼週期也就是1/50,也就是20ms ,pwm一共有16個通道,0-7位高速通道由80mhz時鐘驅動,後面8個為低速通道由1mhz時鐘驅動
int freq_pwm =50;
// pwm解析度,取值為 0-20 之間 ,這裡填寫為10,那麼後面的ledcwrite 這個裡面填寫的pwm值就在 0 - 2的10次方 之間 也就是 0-1024 ,如果是要求不高的東西你可以直接拿1000去算了
int resolution_pwm =10;
// 繫結的io,在下面的繫結函式裡面會用到,繫結之後這個io就會變成我們pwm的輸出口
const
int pwm_pin =4;
//指定pwm繫結到這個io上輸出
void
setup()
void
get_pwm_info()
void
loop()
1.注意pwm的最重要雙要素
也就是頻率與占空比,這上面我設定的頻率為50,那麼乙個週期就是1/50那就是20ms,剛好就是我們的時基的長度,而占空比呢,上面有乙個選項是設定這個pwm通道的解析度,我這裡設定10,那麼占空比取值就是 0-2的10次方 , 也就是 0-1024 ,也就是在20ms這個時長內被分成1024份,我們需要20ms中1.5ms為高電平,那麼就需要這1024份的前1.5/20這個比例的部分為高電平。
2.注意pwm的通道以及繫結的io
我們要先制定好我們使用的是哪個通道,一共有16個通道,然後我們還要指定io去繫結上我們就可以使用這個io輸出我們的pwm 了
沒有最後
ESP32 學習記錄
首次接觸freertos和espressif的產品,例如我,那還是要先來個整體印象,然後再逐個深化。做專案的都知道,老闆們是不允許我們四平八穩的研究完然後再開始專案。那也不妨礙咱們要有自己的節奏,既要平衡專案的進度,也要按照事情的規律來做事情 這就需要快速的準備一些預備知識,磨刀不誤砍柴功,倉促上陣...
ESP32學習 外設 timer
typedef struct timer config t 定時器初始化結構體成員6個,從上到下依次是,中斷使能,計數使能,中斷模式,計數方向,自動過載,分頻係數。timer init timer group 0,timer 1,timerconfig 初始化結構體後,呼叫初始化函式,三個引數包括,...
ESP32學習 外設 UART
brief uart configuration parameters for uart param config function typedef struct uart config t esp32總共有三個串列埠分別是uart num0,uart num1,uart num2。串列埠0作為軟體...