0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】5.OLED板模拟开关按键操作

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-11-04 14:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文来源电子发烧友社区,作者: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数字来查看。
231428av83e08rqgaz896z.png 231429e7vkkzcsss6lqrs5.png 231612h2r5s5gdrr55rfzr.png


我最开始写了一个程序用来读取按下按键之后的ADC的电压。
按下User按键之后电压值为160,而且按下User+S2+S2都是这个值,因为User按钮没有接电阻,按下之后相当于电流没有从S1和S2流过。
单独按下S1的值大概为320。同时按下S1和S2的话,值也是S1的值320.因为电流也只会从S1流过,感觉这个模拟开关设计不是很好,应该多加两个电阻,让S1和S2同时按下的时候有不同的值,这样相当于多了一种按键情况。
单独按下S2的值为548.

我在写程序的时候发现ADC并不需要初始化,可以直接读取就行了。
所以设计程序如下:
创建任务
  1. static void KeyEntry(void)
  2. {
  3. osThreadAttr_t attr;
  4. // GpioInit();
  5. // IoSetFunc(WIFI_IOT_IO_NAME_GPIO_5, WIFI_IOT_IO_FUNC_GPIO_5_GPIO);
  6. // GpioSetDir(WIFI_IOT_IO_NAME_GPIO_5, WIFI_IOT_GPIO_DIR_IN);
  7. // AdcRead();
  8. attr.name = "KeyTask";
  9. attr.attr_bits = 0U;
  10. attr.cb_mem = NULL;
  11. attr.cb_size = 0U;
  12. attr.stack_mem = NULL;
  13. attr.stack_size = KEY_TASK_STACK_SIZE;
  14. attr.priority = KEY_TASK_PRIO;
  15. if (osThreadNew((osThreadFunc_t)KeyTask, NULL, &attr) == NULL) {
  16. printf("[KeyTask] Falied to create KeyTask!n");
  17. }
  18. }
  19. SYS_RUN(KeyEntry);
复制代码


模拟开关值读取:
  1. 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;
    }
复制代码

测试效果如下:
233032pnq3oolco33cuqtc.png
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • wi-fi
    +关注

    关注

    15

    文章

    2462

    浏览量

    130017
  • HarmonyOS
    +关注

    关注

    80

    文章

    2157

    浏览量

    36287
  • HiSpark
    +关注

    关注

    1

    文章

    156

    浏览量

    7799
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    5G路由器中的Wi-Fi 7与Wi-Fi 6对比

    实际上,我们在实际部署中看到的是过去升级5G路由器主要关注的是路由器内部的部件:调制解调器、芯片组和蜂窝网络性能。   现在,人们的关注点转移到了与我们更密切相关的事物上:Wi-Fi。   这就
    的头像 发表于 03-19 16:53 1192次阅读
    <b class='flag-5'>5</b>G路由器中的<b class='flag-5'>Wi-Fi</b> 7与<b class='flag-5'>Wi-Fi</b> 6对比

    技术资讯 I Wi-Fi 模块设计

    本文要点Wi-Fi模块设计旨在打造一套紧凑且高效的硬件和软件解决方案,使设备能够通过Wi-Fi网络实现通信。Wi-Fi模块设计是一个复杂的过程,要求研发人员兼具硬件与软件工程方面的专业知识
    的头像 发表于 02-27 17:12 872次阅读
    技术资讯 I <b class='flag-5'>Wi-Fi</b> 模块设计

    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秒的多线程传输测试
    的头像 发表于 10-14 17:09 2999次阅读
    RK3506工控<b class='flag-5'>板</b>核心<b class='flag-5'>板</b><b class='flag-5'>Wi-Fi</b>模组性能测试报告

    ‌Microchip WILCS02 Wi-Fi®模块开发技术解析与应用指南

    Microchip Technology WILCS02 Wi-Fi^®^ 链路控制器SD是一款安全数字 (SD) 卡接口,支持2.4GHz IEEE^®^ 802.11 b/g/n标准。该
    的头像 发表于 10-06 15:54 1363次阅读
    ‌Microchip WILCS02 <b class='flag-5'>Wi-Fi</b>®模块开发<b class='flag-5'>板</b>技术解析与应用指南

    浅谈Wi-Fi 6E与Wi-Fi 7的关键器件——BAW滤波器新技术

    ,美国联邦通信委员会(FCC)投票通过将6GHz频谱划为免许可频段供Wi-Fi使用,这标志着Wi-Fi正式进入“三频”时代——除Wi-Fi 6及前代技术使用的2.4GHz和5GHz频段
    发表于 09-19 18:29 2452次阅读
    浅谈<b class='flag-5'>Wi-Fi</b> 6E与<b class='flag-5'>Wi-Fi</b> 7的关键器件——BAW滤波器新技术

    如何在 NuMaker-IoT-M467 上使用 Arduino IDE 控制 Wi-Fi 模块?

    在NuMaker开发上,有一个ESP-12F Wi-Fi模块;但是,Arduino IDE 中的 NuMaker UNO 包不提供该模块的相关控制。如果您希望在 Arduino IDE 中控制此模块,您应该如何进行?
    发表于 09-04 08:28

    如何更新 NuMaker IoT 上的 Wi-Fi 模块固件?

    更新 NuMaker IoT 上的 Wi-Fi 模块固件
    发表于 09-04 08:28

    LitePoint Wi-Fi测试软件减轻客户设计负担

    Wi-Fi 7于一年多前获得Wi-Fi联盟认证以来,作为最新一代通信技术,Wi-Fi正逐步成为用户实现无所不在无线连接的新选择。随着每一代Wi-Fi信号复杂性的提升,建议将硬件测试纳
    的头像 发表于 08-06 15:34 1382次阅读
    LitePoint <b class='flag-5'>Wi-Fi</b>测试软件减轻客户设计负担

    Texas Instruments CC335x SimpleLink™双频Wi-Fi® 6配套IC数据手册

    ) 和Wi-Fi 5 (802.11ac)。这些CC335x是Texas Instruments的第10代连接组合芯片。因此,CC335x基于成熟的技术设计而成。这些器件非常适合配备运行TCP/IP的Linux或
    的头像 发表于 07-23 11:37 1661次阅读
    Texas Instruments CC335x SimpleLink™双频<b class='flag-5'>Wi-Fi</b>® 6配套IC数据手册

    如何选择合适的芯科科技Wi-Fi开发

    您正在寻找适用于超低功耗物联网应用项目的Wi-Fi 开发吗?本文将介绍Silicon Labs(芯科科技)推出的所有SiWx917 Wi-Fi 6和低功耗蓝牙5.4解决方案的Wi-Fi
    的头像 发表于 07-09 09:15 2929次阅读

    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可确保更高吞吐量、更低延迟和更高数据速率。多链路操作有助于建立多个有源链路,通过选择最可用的传输链路来提高峰值数
    的头像 发表于 06-12 10:21 1399次阅读

    适用于 Wi-Fi 7 应用的 5 GHz 高功率前端模块 skyworksinc

    电子发烧友网为你提供()适用于 Wi-Fi 7 应用的 5 GHz 高功率前端模块相关产品参数、数据手册,更有适用于 Wi-Fi 7 应用的 5 GHz 高功率前端模块的引脚图、接线图
    发表于 05-27 18:33
    适用于 <b class='flag-5'>Wi-Fi</b> 7 应用的 <b class='flag-5'>5</b> GHz 高功率前端模块 skyworksinc