最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

ESP32使用正交編碼器教程(IDF)

2023-07-06 22:33 作者:老閑漁  | 我要投稿

前言:使用最簡(jiǎn)單粗暴的方式實(shí)現(xiàn)編碼器的使用,簡(jiǎn)單易懂,準(zhǔn)確率高


編碼器原理圖:

原理圖


一共只有四個(gè)重要引腳,分別是com:公共端,接GND或者VCC都行,如果接GND則IO上拉,接VCC則IO下拉S:按鈕檢測(cè)(編碼器自帶了一個(gè)按鍵),A/B:AB線(xiàn),用于檢測(cè)編碼器正反轉(zhuǎn)以及轉(zhuǎn)了幾格

編碼器AB線(xiàn)規(guī)律:

A線(xiàn)默認(rèn)電平狀態(tài)永遠(yuǎn)是1,只有在編碼器撥動(dòng)一格的時(shí)候會(huì)先變0,隨后恢復(fù)成1

B線(xiàn)默認(rèn)電平狀態(tài)不穩(wěn)定,在編碼器不撥動(dòng)完整一格的情況下,輕微順時(shí)針觸碰撥盤(pán)會(huì)變1,輕微逆時(shí)針觸碰撥盤(pán)會(huì)變0

根據(jù)這個(gè)規(guī)律來(lái)完善邏輯:當(dāng)A線(xiàn)從0變化為1時(shí),說(shuō)明編碼器已經(jīng)被撥完了完整的一格,由于B線(xiàn)的狀態(tài)只要輕輕的觸碰就能改變,所以此時(shí)B線(xiàn)的值 由 撥動(dòng)時(shí) 是 順時(shí)針旋轉(zhuǎn)還是逆時(shí)針旋轉(zhuǎn)決定,如果讀出為1,則說(shuō)明剛剛順時(shí)針撥動(dòng)了一格

代碼實(shí)現(xiàn):

所有實(shí)現(xiàn)加在一起只有大約40行的代碼,核心邏輯只有16行代碼,非常簡(jiǎn)明簡(jiǎn)單,接下來(lái)解釋一下工作流程:

流程:

1、初始化相關(guān)的GPIO,由于我的COM端接GND,所以將相關(guān)的IO配置為上拉輸入

2、定義一個(gè)標(biāo)志位flag,用于控制是否進(jìn)行接下來(lái)的判斷

3、循環(huán)中判斷A線(xiàn)的狀態(tài)是否為0,如果為0,則將flag置1,以進(jìn)行等待A線(xiàn)變?yōu)?的操作

4、循環(huán)等待A線(xiàn)由0變1,說(shuō)明已經(jīng)撥動(dòng)了一格,此時(shí)及時(shí)讀取B線(xiàn)的值即可判斷出當(dāng)前是順時(shí)針旋轉(zhuǎn)還是逆時(shí)針旋轉(zhuǎn),然后將flag置0,等待下次觸發(fā)

結(jié)果


總結(jié):

使用IO查詢(xún)法做的編碼器讀取,讀取速度為1ms,這就注定了不能轉(zhuǎn)的太快,實(shí)測(cè)10ms撥一格,不會(huì)出現(xiàn)誤判的情況,實(shí)際上正常使用,即使是快速旋轉(zhuǎn)的時(shí)間間隔也基本是20ms以上,基本上可以保障準(zhǔn)確率,但是如果非要猛轉(zhuǎn)它,那就只能使用其他外設(shè)解決了


????????后記(吐槽):正交編碼器是個(gè)好東西,一個(gè)編碼器就可以頂替掉三個(gè)普通按鍵的功能(正轉(zhuǎn),反轉(zhuǎn),按下),而且體驗(yàn)上比傳統(tǒng)按鍵好得多,搓編碼器很解壓,但是,但是,但是,怎么使用編碼器是個(gè)問(wèn)題,之前有大概了解過(guò),網(wǎng)上資料給我的感覺(jué)就是挺麻煩挺不好做的,STM32官方已經(jīng)適配了正交編碼器的接口,直接可以使用,ESP32好像沒(méi)有,需要自己實(shí)現(xiàn),話(huà)不多說(shuō)先去百度一波,搜索“esp32 正交編碼器”,搜出不少內(nèi)容,點(diǎn)開(kāi)第一個(gè)鏈接,好,csdn付費(fèi)專(zhuān)欄,我**&%¥#@#¥&,第二個(gè)鏈接說(shuō)的是使用ESP的pcnt功能實(shí)現(xiàn)讀取編碼器,但是代碼好多好復(fù)雜,不想看,第三個(gè)鏈接也是csdn的,寫(xiě)的還不錯(cuò)的,用的中斷和隊(duì)列,優(yōu)雅但復(fù)雜,暫時(shí)跳過(guò),再?gòu)暮竺娴逆溄娱_(kāi)始基本上就沒(méi)什么相關(guān)的東西了,要么是arduino,要么是stm32,要么就是單純編碼器的介紹,那么去bilibili搜索一下正交編碼器好吧,結(jié)果出來(lái)的內(nèi)容要么就是只有幾分鐘的成果演示,要么就是好幾十分鐘的長(zhǎng)篇大論,但是我只是想簡(jiǎn)單的了解一下編碼器的工作流程,然后能夠用起來(lái)就好了,我并不想聽(tīng)好幾十分鐘的篇幅給我介紹編碼器的各種詳細(xì)數(shù)據(jù)、類(lèi)型、各種無(wú)關(guān)緊要的巴拉巴拉的東西,然后我一思索,這玩意就三四個(gè)腳,不至于那么難吧,于是就簡(jiǎn)單的用串口打印了一下編碼器旋轉(zhuǎn)時(shí)各個(gè)引腳的電平狀態(tài),稍微總結(jié)了一下變化規(guī)律,然后自己實(shí)現(xiàn)了功能,核心邏輯只有16行代碼,完全可以勝任大部分日常使用的場(chǎng)景,比起各種教程里動(dòng)輒幾十上百行的代碼,可以說(shuō)是非常的簡(jiǎn)單明了了,唯一的缺點(diǎn)就是辛苦CPU以及不支持猛轉(zhuǎn)編碼器,不如中斷或者其他外設(shè)來(lái)的優(yōu)雅......到底還是自己給搞定了

????????現(xiàn)在找一篇干練一點(diǎn)的教程是真難啊,很多教學(xué)視頻都是猛猛的灌水,沒(méi)有干貨,印象最深刻的一個(gè)視頻教程,核心內(nèi)容就一句話(huà),但是視頻愣是做了十幾分鐘,大概就是“同學(xué)們啊...額...這個(gè)...今天呢...我們來(lái)講講這個(gè)東西啊....嗯...咳咳...這個(gè)啊..就是這個(gè)還是很重要的...嗯...所以我們來(lái)講講...嗯啊...”這樣的,還有就是操作不熟練就直接錄教程,然后總是寫(xiě)錯(cuò),通篇都在改錯(cuò),要么就是視頻聲音聽(tīng)不清,我都要看自閉了??還有網(wǎng)上抄來(lái)抄去的各種教程,十幾個(gè)不同的網(wǎng)站但是里面的內(nèi)容一模一樣,也不知道誰(shuí)抄的誰(shuí),原作者都找不到了,現(xiàn)在像這樣的教程越來(lái)越多,導(dǎo)致很多干貨的教程都被淹沒(méi)了,不容易找到,要么就是各種付費(fèi),今天就是找了半天沒(méi)找到什么心儀的教程,有感而發(fā)寫(xiě)下這篇專(zhuān)欄

????????不過(guò)話(huà)說(shuō)回來(lái),有人愿意免費(fèi)出教程就不錯(cuò)了,總比啥都沒(méi)得看強(qiáng),希望本教程對(duì)你有所幫助(*゜ー゜*)


ESP32使用正交編碼器教程(IDF)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
尼木县| 鹤岗市| 搜索| 资溪县| 珠海市| 色达县| 宣汉县| 开平市| 上饶市| 苏尼特右旗| 罗山县| 鄂尔多斯市| 锡林郭勒盟| 邻水| 托里县| 石屏县| 平原县| 隆德县| 胶南市| 佛学| 昭通市| 洪泽县| 镇雄县| 绥德县| 鸡东县| 广安市| 沁水县| 沙河市| 伊宁市| 北宁市| 杂多县| 梁河县| 吉安县| 循化| 肇源县| 福州市| 丘北县| 体育| 开远市| 广州市| 安阳县|