本文来源电子发烧友社区,作者: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文章
2462浏览量
130017 -
HarmonyOS
+关注
关注
80文章
2157浏览量
36287 -
HiSpark
+关注
关注
1文章
156浏览量
7799
发布评论请先 登录
相关推荐
热点推荐
5G路由器中的Wi-Fi 7与Wi-Fi 6对比
实际上,我们在实际部署中看到的是过去升级5G路由器主要关注的是路由器内部的部件:调制解调器、芯片组和蜂窝网络性能。 现在,人们的关注点转移到了与我们更密切相关的事物上:Wi-Fi。 这就
技术资讯 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
•2452次阅读
如何在 NuMaker-IoT-M467 板上使用 Arduino IDE 控制 Wi-Fi 模块?
在NuMaker开发板上,有一个ESP-12F Wi-Fi模块;但是,Arduino IDE 中的 NuMaker UNO 包不提供该模块的相关控制。如果您希望在 Arduino IDE 中控制此模块,您应该如何进行?
发表于 09-04 08:28
LitePoint Wi-Fi测试软件减轻客户设计负担
自Wi-Fi 7于一年多前获得Wi-Fi联盟认证以来,作为最新一代通信技术,Wi-Fi正逐步成为用户实现无所不在无线连接的新选择。随着每一代Wi-Fi信号复杂性的提升,建议将硬件测试纳
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 8:开启极高可靠性 (UHR) 连接的新纪元——1
、5GHz与6GHz。关于标准正式发布的年份,业界目前预估为2028年,但真正的标准制定完成日期仍需以IEEE 与Wi-Fi Alliance 工作小组的进度为准。
图2展示了IEEE正在进行
发表于 06-13 11:09
贸泽电子开售Qorvo Wi-Fi 7前端模块
入多输出(MIMO)功能,全频段Wi-Fi 5、6和6E。Wi-Fi 7可确保更高吞吐量、更低延迟和更高数据速率。多链路操作有助于建立多个有源链路,通过选择最可用的传输链路来提高峰值数
适用于 Wi-Fi 7 应用的 5 GHz 高功率前端模块 skyworksinc
电子发烧友网为你提供()适用于 Wi-Fi 7 应用的 5 GHz 高功率前端模块相关产品参数、数据手册,更有适用于 Wi-Fi 7 应用的 5 GHz 高功率前端模块的引脚图、接线图
发表于 05-27 18:33
【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】5.OLED板模拟开关按键操作
评论