編輯語(yǔ):
芯片開(kāi)放社區(qū)(OCC)面向廣大開(kāi)發(fā)者推出應(yīng)用實(shí)戰(zhàn)系列內(nèi)容,通過(guò)分享開(kāi)發(fā)者實(shí)戰(zhàn)開(kāi)發(fā)案例,總結(jié)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn),梳理開(kāi)發(fā)中的常見(jiàn)問(wèn)題及解決方案,為后續(xù)參與的開(kāi)發(fā)者提供更多參考與借鑒。
本文是關(guān)于開(kāi)發(fā)者 kit7828基于BL606P-DVK開(kāi)發(fā)板實(shí)戰(zhàn)開(kāi)發(fā)的系列文章中的第三篇,主要介紹了ADC Key按鈕例程,后面還會(huì)持續(xù)更新該開(kāi)發(fā)者的測(cè)評(píng)內(nèi)容,敬請(qǐng)期待!
BL606P的ADC按鍵都接在IO管腳上的GPIO16,需要設(shè)置跳線帽。根據(jù)分壓電阻網(wǎng)絡(luò)獲取不同的電壓值,通過(guò)AD轉(zhuǎn)換值區(qū)分按下了哪個(gè)按鍵。
01硬件及連接
根據(jù)官方提供的資料,可以看到如下的原理圖
ADC的管腳使用的是GPIO16,需要設(shè)置跳線帽。
KEY_IN通過(guò)FPC連接線連接至KEY
而key連接至按鍵電阻分壓網(wǎng)絡(luò)
通過(guò)不同大的分壓,確定哪個(gè)按鍵按下
02軟件實(shí)現(xiàn)
平頭哥官網(wǎng)給出的ADC例程
具體實(shí)現(xiàn)代碼
CDK中具體代碼為:
2.1 設(shè)置管腳
void adcpin_init(void) { csi_pin_set_mux(GPIO_PIN_16, GPIO16_ADC_CH8); }
2.2 ADC初始化
void adckey_Init() { adc.port = 8; adc.config.sampling_cycle = 100; hal_adc_init(&adc); }
2.3 按鍵檢測(cè)代碼
#define KEY_NOTHING19 uint16_t GetKey() { //持續(xù)檢測(cè)按鍵次數(shù) #define CHECKNUM 10 uint32_t value; uint16_t kval=0; uint16_t oldkey=KEY_NOTHING,i=0; hal_adc_value_get(&adc, &value, HAL_WAIT_FOREVER); kval = (value & 0xffff)>> 9; if(kvalCHECKNUM)i=CHECKNUM; } } else oldkey=KEY_NOTHING; return KEY_NOTHING; } ){>
2.4 按鍵判定代碼
keyval = GetKey(); if( keyval < 19) printf("Key Pressed: %d ", keyval); aos_msleep(5); switch (keyval) { case 0: printf("K4 Pressed. "); break; case 3: printf("K3 Pressed. "); break; case 8: printf("K6 Pressed. "); break; case 11: case 12: printf("K5 Pressed. "); break; case 17: printf("K7 Pressed. "); break; }
03運(yùn)行后效果
按鍵檢測(cè)過(guò)程中,由于運(yùn)用ADC檢測(cè)電壓,會(huì)出現(xiàn)浮動(dòng)情況,比較好的解決辦法是多讀數(shù)幾次,取平均值。
審核編輯:湯梓紅
-
adc
+關(guān)注
關(guān)注
99文章
6709瀏覽量
549280 -
音視頻
+關(guān)注
關(guān)注
4文章
525瀏覽量
30531 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5683瀏覽量
104884 -
key
+關(guān)注
關(guān)注
0文章
53瀏覽量
13091 -
按鍵檢測(cè)
+關(guān)注
關(guān)注
0文章
25瀏覽量
4938
原文標(biāo)題:應(yīng)用速遞 | 博流BL606P音視頻開(kāi)發(fā)板:三、ADC Key按鈕例程
文章出處:【微信號(hào):芯片開(kāi)放社區(qū),微信公眾號(hào):芯片開(kāi)放社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
基于博流BL606P音視頻開(kāi)發(fā)板的開(kāi)發(fā)環(huán)境搭建及例程測(cè)試

博流BL606P音視頻開(kāi)發(fā)板:(三)ADC測(cè)試
基于博流BL606P音視頻開(kāi)發(fā)板的智能音箱測(cè)試

博流BL606P音視頻開(kāi)發(fā)板:HelloWord Demo運(yùn)行及跳線帽設(shè)置

基于博流BL606P音視頻開(kāi)發(fā)板實(shí)現(xiàn)RGB點(diǎn)燈

博流BL606P音視頻開(kāi)發(fā)板CKLink無(wú)法下載的解決辦法

基于博流BL606P音視頻開(kāi)發(fā)板的智能音箱系統(tǒng)開(kāi)發(fā)方案

基于博流BL606P音視頻開(kāi)發(fā)板GPIO驅(qū)動(dòng)RGB燈

基于博流BL606P音視頻開(kāi)發(fā)板的藍(lán)牙音頻測(cè)試

基于博流BL606P音視頻開(kāi)發(fā)板驅(qū)動(dòng)LED數(shù)碼管

基于博流BL606P音視頻開(kāi)發(fā)板的CAN擴(kuò)展模塊收發(fā)測(cè)試

博流BL606P音視頻開(kāi)發(fā)板:驅(qū)動(dòng)MAX7219點(diǎn)陣模組

基于博流BL606P音視頻開(kāi)發(fā)板的GPIO點(diǎn)燈教程

基于博流BL606P音視頻開(kāi)發(fā)板驅(qū)動(dòng)LED數(shù)碼管

基于博流BL606P音視頻開(kāi)發(fā)板的音響測(cè)試

評(píng)論