本文來源電子發燒友社區,作者: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數字來查看。
?
?![231612h2r5s5gdrr55rfzr.png](https://bbs.elecfans.com/data/attachment/forum/202011/30/231612h2r5s5gdrr55rfzr.png)
我最開始寫了一個程序用來讀取按下按鍵之后的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數字來查看。
![231428av83e08rqgaz896z.png](https://bbs.elecfans.com/data/attachment/forum/202011/30/231428av83e08rqgaz896z.png)
![231429e7vkkzcsss6lqrs5.png](https://bbs.elecfans.com/data/attachment/forum/202011/30/231429e7vkkzcsss6lqrs5.png)
![231612h2r5s5gdrr55rfzr.png](https://bbs.elecfans.com/data/attachment/forum/202011/30/231612h2r5s5gdrr55rfzr.png)
我最開始寫了一個程序用來讀取按下按鍵之后的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);
模擬開關值讀取:
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;}
測試效果如下:
![233032pnq3oolco33cuqtc.png](https://bbs.elecfans.com/data/attachment/forum/202011/30/233032pnq3oolco33cuqtc.png)
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
wi-fi
+關注
關注
14文章
2175瀏覽量
125209 -
HarmonyOS
+關注
關注
79文章
1984瀏覽量
30686 -
HiSpark
+關注
關注
1文章
156瀏覽量
6964
發布評論請先 登錄
相關推薦
Wi-Fi 8要來了!未來Wi-Fi技術演進方向揭秘
產品銷售中,雖然Wi-Fi 7產品的銷量份額快速從年初的個位數百分比增長至14%,但Wi-Fi 6產品的銷量份額依然穩定在60%左右。如果從存量設備來看,那么Wi-Fi 7路由器的占比將遠遠小于這個數。 ? 智能手機等終端設備已
![<b class='flag-5'>Wi-Fi</b> 8要來了!未來<b class='flag-5'>Wi-Fi</b>技術演進方向揭秘](https://file1.elecfans.com/web2/M00/0C/49/wKgZomdCKbGANgatAA1CFWsZgC4311.png)
華為海思正式進入Wi-Fi FEM賽道?
產品和技術交流。
2017年是國產Wi-Fi FEM元年,銳迪科(RDA)是中國大陸第一家推出和量產Wi-Fi5 FEM的公司,也是第一家導入H公司的Wi-Fi FEM廠商。
也是在這一年,我頻繁地跟H
發表于 12-11 17:42
摩爾斯微電子發布Wi-Fi HaLow評估套件,加速物聯網開發
。 MM6108-EKH05評估套件充分發揮了Wi-Fi HaLow技術的強大功能,支持從智能家居到工業自動化的廣泛應用。其數據傳輸速率高達32.5 Mbps,并能在1 GHz以下頻率范圍內進行可編程操作,是物聯網
Wi-Fi 7與Wi-Fi 6E有什么區別
也許很多人還在考慮是否要將使用的Wi-Fi設備升級到Wi-Fi 6或Wi-Fi 6E,而這些標準的繼任者卻已經開始“登堂入室”了。Wi-Fi 7是新一代
未來的Wi-Fi路由器
廠家加入開始殺價,Wi-Fi FEM由于廠家眾多,價格一降再降,直接殺到成本價以下,DC-DC電源芯片也好不到哪里去,供應商的上市年度報和季度報也是不堪入眼。 除了跟著主芯片從Wi-Fi4升級到Wi-Fi5,再從
ESP32 D0WDQ6設計的板子,ADC2與Wi-Fi驅動程序可以同時工作嗎?
板子使用 GPIO27作為ADC2 通道7去采集模擬量,調試會打印wifi in use。然后網上搜索到:Wi-Fi 驅動程序使用了ADC2,應用程序只能在未啟動Wi-Fi時使用ADC2。
因為
發表于 06-20 08:17
DA16200 超低功耗 Wi-Fi 模塊開發套件 Pro數據手冊
電子發燒友網站提供《DA16200 超低功耗 Wi-Fi 模塊開發套件 Pro數據手冊.rar》資料免費下載
發表于 05-30 17:53
?1次下載
![DA16200 超低功耗 <b class='flag-5'>Wi-Fi</b> 模塊開發<b class='flag-5'>套件</b> Pro數據手冊](https://file1.elecfans.com/web2/M00/EB/52/wKgaomZYRFeAUYu_AAIcdL7RdCA705.png)
DA16200 超低功耗 Wi-Fi 模塊開發套件數據手冊
電子發燒友網站提供《DA16200 超低功耗 Wi-Fi 模塊開發套件數據手冊.rar》資料免費下載
發表于 05-30 17:13
?0次下載
![DA16200 超低功耗 <b class='flag-5'>Wi-Fi</b> 模塊開發<b class='flag-5'>套件</b>數據手冊](https://file1.elecfans.com/web2/M00/EA/68/wKgZomZYPi-AFsOaAAHH6y5qIrM275.png)
驗證物聯網Wi-Fi HaLow用例的MM6108-EKH08開發套件來啦
驗證物聯網Wi-Fi HaLow用例的MM6108-EKH08開發套件來啦 MM6108-EKH08開發套件專為驗證物聯網Wi-Fi HaLow用例而設計。該
![驗證物聯網<b class='flag-5'>Wi-Fi</b> HaLow用例的MM6108-EKH08開發<b class='flag-5'>套件</b>來啦](https://file1.elecfans.com/web2/M00/C8/D1/wKgaomYXYLWAX25lAACMPTBW4N0471.jpg)
WI-FI基礎知識及飛易通SOC模塊
=8bits) 第二代:以IEEE 802.11b為準,工作頻段為2.4GHz, 最高速率半雙工11Mbit/s,認證項目為“Wi-Fi CERTIFIED b” 第三代:以IEEE 802.11a為準,工作頻段為5GHz,最高速率
![<b class='flag-5'>WI-FI</b>基礎知識及飛易通SOC模塊](https://file1.elecfans.com//web2/M00/C2/46/wKgZomXhfUyAT9JKAAGr3vPkk8k937.jpg)
評論