本文來源電子發(fā)燒友社區(qū),作者:hehung, 帖子地址:https://bbs.elecfans.com/jishu_2013902_1_1.html
玩玩OLED板子上面的兩個模擬開關(guān)S1與S2。
首先查看原理圖:
這兩個按鍵是連接在GPIO5上面的,我在上一個帖子上面使用的User按鍵也是連接在這個端口的,GPIO是一個模擬端口使用了ADC2,通過這個模擬端口我們可以一次性讀取三個按鈕的值了。
從原理圖可以看出,S1按鈕的值就為參考電壓*(1/(4.7+1)),S2按鈕的值就為參考電壓*((1+1)/(4.7+1+1)),具體數(shù)值可以寫一個程序用串口讀取讀出的ADC數(shù)字來查看。
?
?
我最開始寫了一個程序用來讀取按下按鍵之后的ADC的電壓。
按下User按鍵之后電壓值為160,而且按下User+S2+S2都是這個值,因為User按鈕沒有接電阻,按下之后相當(dāng)于電流沒有從S1和S2流過。
單獨按下S1的值大概為320。同時按下S1和S2的話,值也是S1的值320.因為電流也只會從S1流過,感覺這個模擬開關(guān)設(shè)計不是很好,應(yīng)該多加兩個電阻,讓S1和S2同時按下的時候有不同的值,這樣相當(dāng)于多了一種按鍵情況。
單獨按下S2的值為548.
我在寫程序的時候發(fā)現(xiàn)ADC并不需要初始化,可以直接讀取就行了。
所以設(shè)計程序如下:
創(chuàng)建任務(wù)
復(fù)制代碼
模擬開關(guān)值讀取:
復(fù)制代碼
測試效果如下:
玩玩OLED板子上面的兩個模擬開關(guān)S1與S2。
首先查看原理圖:
這兩個按鍵是連接在GPIO5上面的,我在上一個帖子上面使用的User按鍵也是連接在這個端口的,GPIO是一個模擬端口使用了ADC2,通過這個模擬端口我們可以一次性讀取三個按鈕的值了。
從原理圖可以看出,S1按鈕的值就為參考電壓*(1/(4.7+1)),S2按鈕的值就為參考電壓*((1+1)/(4.7+1+1)),具體數(shù)值可以寫一個程序用串口讀取讀出的ADC數(shù)字來查看。
?
?
我最開始寫了一個程序用來讀取按下按鍵之后的ADC的電壓。
按下User按鍵之后電壓值為160,而且按下User+S2+S2都是這個值,因為User按鈕沒有接電阻,按下之后相當(dāng)于電流沒有從S1和S2流過。
單獨按下S1的值大概為320。同時按下S1和S2的話,值也是S1的值320.因為電流也只會從S1流過,感覺這個模擬開關(guān)設(shè)計不是很好,應(yīng)該多加兩個電阻,讓S1和S2同時按下的時候有不同的值,這樣相當(dāng)于多了一種按鍵情況。
單獨按下S2的值為548.
我在寫程序的時候發(fā)現(xiàn)ADC并不需要初始化,可以直接讀取就行了。
所以設(shè)計程序如下:
創(chuàng)建任務(wù)
- static void KeyEntry(void)
- {
- osThreadAttr_t attr;
- // GpioInit();
- // IoSetFunc(WIFI_IOT_IO_NAME_GPIO_5, WIFI_IOT_IO_FUNC_GPIO_5_GPIO);
- // GpioSetDir(WIFI_IOT_IO_NAME_GPIO_5, WIFI_IOT_GPIO_DIR_IN);
- // AdcRead();
- attr.name = "KeyTask";
- attr.attr_bits = 0U;
- attr.cb_mem = NULL;
- attr.cb_size = 0U;
- attr.stack_mem = NULL;
- attr.stack_size = KEY_TASK_STACK_SIZE;
- attr.priority = KEY_TASK_PRIO;
- if (osThreadNew((osThreadFunc_t)KeyTask, NULL, &attr) == NULL) {
- printf("[KeyTask] Falied to create KeyTask!n");
- }
- }
- SYS_RUN(KeyEntry);
模擬開關(guān)值讀取:
-
static void *KeyTask(const char *arg){(void)arg;
hi_u16 Key_adc_value = 0u;
hi_u32 ret = 0;
-
while (1) {ret = hi_adc_read((hi_adc_channel_index)HI_ADC_CHANNEL_2, &Key_adc_value,HI_ADC_EQU_MODEL_1, HI_ADC_CUR_BAIS_DEFAULT, 0);if (ret != HI_ERR_SUCCESS) {printf("ADC Read Failn");}else{// printf("ADC value = %d", Key_adc_value);}
-
/*User 按鍵ADC值讀出來大概為116*//*S1 按鍵ADC讀出來大概為320*//*S2 按鍵ADC讀出來大概為548*/if(Key_adc_value <= 200){printf("User key pressedn");}else if(Key_adc_value <= 400){printf("User S1 pressedn");}else if(Key_adc_value <= 600){printf("User S2 pressedn");}else{}usleep(KEY_INTERVAL_TIME_US);}
-
return NULL;}
測試效果如下:
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
wi-fi
+關(guān)注
關(guān)注
15文章
2424瀏覽量
129566 -
HarmonyOS
+關(guān)注
關(guān)注
80文章
2153瀏覽量
36054 -
HiSpark
+關(guān)注
關(guān)注
1文章
156瀏覽量
7757
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
技術(shù)資訊 I Wi-Fi 模塊設(shè)計
本文要點Wi-Fi模塊設(shè)計旨在打造一套緊湊且高效的硬件和軟件解決方案,使設(shè)備能夠通過Wi-Fi網(wǎng)絡(luò)實現(xiàn)通信。Wi-Fi模塊設(shè)計是一個復(fù)雜的過程,要求研發(fā)人員兼具硬件與軟件工程方面的專業(yè)知識
Wi-Fi:無線連接的全球通用語
與數(shù)據(jù)鏈路層的規(guī)范。 l Wi-Fi聯(lián)盟:成立于1999年的國際組織,負(fù)責(zé)Wi-Fi商標(biāo)認(rèn)證、技術(shù)推廣與互操作性測試。 l 頻段:主要使用2.4GHz與5GHz頻段,部分支持6GHz,
發(fā)表于 01-07 09:49
Nordic發(fā)布nRF7002 EBII 開發(fā)板, 支持Wi-Fi 6, 解鎖nRF54L新玩法
和 5 GHz)以及高級 Wi-Fi 6 功能,例如目標(biāo)喚醒時間 (TWT)、OFDMA 和 BSS 著色,從而實現(xiàn)高效、無干擾的電池供電運行。它采用雙頻芯片天線,確保在各個 Wi-Fi 頻段上都能提供
發(fā)表于 12-10 11:58
RK3506工控板核心板Wi-Fi模組性能測試報告
RK3506工控板核心板Wi-Fi模組性能測試報告測試概述本次測試對比了三種不同WiFi模組在2.4GHz和5GHz頻段的網(wǎng)絡(luò)吞吐量性能,使用iperf3工具進(jìn)行30秒的多線程傳輸測試
?Microchip WILCS02 Wi-Fi?模塊開發(fā)板技術(shù)解析與應(yīng)用指南
Microchip Technology WILCS02 Wi-Fi^?^ 鏈路控制器SD板是一款安全數(shù)字 (SD) 卡接口板,支持2.4GHz IEEE^?^ 802.11 b/g/n標(biāo)準(zhǔn)。該
淺談Wi-Fi 6E與Wi-Fi 7的關(guān)鍵器件——BAW濾波器新技術(shù)
,美國聯(lián)邦通信委員會(FCC)投票通過將6GHz頻譜劃為免許可頻段供Wi-Fi使用,這標(biāo)志著Wi-Fi正式進(jìn)入“三頻”時代——除Wi-Fi 6及前代技術(shù)使用的2.4GHz和5GHz頻段
發(fā)表于 09-19 18:29
?2137次閱讀
如何在 NuMaker-IoT-M467 板上使用 Arduino IDE 控制 Wi-Fi 模塊?
在NuMaker開發(fā)板上,有一個ESP-12F Wi-Fi模塊;但是,Arduino IDE 中的 NuMaker UNO 包不提供該模塊的相關(guān)控制。如果您希望在 Arduino IDE 中控制此模塊,您應(yīng)該如何進(jìn)行?
發(fā)表于 09-04 08:28
Texas Instruments CC335x SimpleLink?雙頻Wi-Fi? 6配套IC數(shù)據(jù)手冊
) 和Wi-Fi 5 (802.11ac)。這些CC335x是Texas Instruments的第10代連接組合芯片。因此,CC335x基于成熟的技術(shù)設(shè)計而成。這些器件非常適合配備運行TCP/IP的Linux或
如何選擇合適的芯科科技Wi-Fi開發(fā)板
您正在尋找適用于超低功耗物聯(lián)網(wǎng)應(yīng)用項目的Wi-Fi 開發(fā)板嗎?本文將介紹Silicon Labs(芯科科技)推出的所有SiWx917 Wi-Fi 6和低功耗藍(lán)牙5.4解決方案的Wi-Fi
Wi-Fi HaLow如何突破傳統(tǒng)Wi-Fi性能瓶頸?
!傳統(tǒng)Wi-Fi的痛點高頻段衰減快:5GHz信號穿墻后衰減超80%,地下室、倉庫成盲區(qū);大帶寬高耗電:設(shè)備需持續(xù)處理高速數(shù)據(jù)流,智能門鎖電池1個月耗盡;信道擁堵:
基于 Wi-Fi 的定位服務(wù)
以下捕獲使用 location_wifi_get 函數(shù)請求 Wi-Fi 定位服務(wù)。該事件的總功耗為 125.85mC,日志顯示精確度為 30.0m。
Got location:
method
發(fā)表于 04-17 15:16
nRF Cloud Wi-Fi 定位服務(wù)
、Predictive-GPS、Single-Cell、Multi-Cell 和 Wi-Fi 定位。通過利用 nRF Cloud 的優(yōu)化定位算法,基于 Nordic SoC 和 模組的產(chǎn)品可在定位用例
發(fā)表于 04-17 15:07
Wi-Fi 定位服務(wù)
Wi-Fi 是一種著名的無線網(wǎng)絡(luò)技術(shù),用于設(shè)備的局域網(wǎng)和互聯(lián)網(wǎng)接入。Wi-Fi 通過 Wi-Fi 網(wǎng)絡(luò)為家庭、辦公室和學(xué)校等環(huán)境提供便捷的無線互聯(lián)網(wǎng)接入服務(wù)。
Wi-Fi 定位是一種
發(fā)表于 04-17 15:01
【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】5.OLED板模擬開關(guān)按鍵操作
評論