ESP32學習9 PWM的輸出

2021-10-06 19:26:07 字數 1220 閱讀 5689

先給大家講講舵機的驅動吧 , 雖然之前在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作為軟體...