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