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

    文章

    2379

    浏览量

    128890
  • HarmonyOS
    +关注

    关注

    80

    文章

    2146

    浏览量

    35568
  • HiSpark
    +关注

    关注

    1

    文章

    156

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    Microchip Technology WILCS02 Wi-Fi^®^ 链路控制器SD是一款安全数字 (SD) 卡接口,支持2.4GHz IEEE^®^ 802.11 b/g/n标准。该
    的头像 发表于 10-06 15:54 962次阅读
    ‌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 1319次阅读
    浅谈<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

    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 860次阅读
    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 2269次阅读

    Wi-Fi 8:开启极高可靠性 (UHR) 连接的新纪元——1

    5GHz与6GHz。关于标准正式发布的年份,业界目前预估为2028年,但真正的标准制定完成日期仍需以IEEE 与Wi-Fi Alliance 工作小组的进度为准。 图2展示了IEEE正在进行
    发表于 06-13 11:09

    Wi-Fi HaLow如何突破传统Wi-Fi性能瓶颈?

    !传统Wi-Fi的痛点高频段衰减快:5GHz信号穿墙后衰减超80%,地下室、仓库成盲区;大带宽高耗电:设备需持续处理高速数据流,智能门锁电池1个月耗尽;信道拥堵:
    的头像 发表于 04-22 11:38 729次阅读
    <b class='flag-5'>Wi-Fi</b> HaLow如何突破传统<b class='flag-5'>Wi-Fi</b>性能瓶颈?

    基于 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

    如何为驱动添加Wi-Fi功能

    为驱动添加Wi-Fi功能,可以通过硬件和软件两种途径实现。
    的头像 发表于 04-16 14:22 763次阅读

    华为海思正式进入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以下频率范围内进行可编程操作,是物联网
    的头像 发表于 12-11 13:40 1052次阅读

    Wi-Fi 4到Wi-Fi 7:网速飙升40倍的无线革命

    Wi-Fi 4首次引入MIMO和40 MHz频宽,是基础的高效无线网络标准。   Wi-Fi 5 Wi-Fi 5拥有更高的数据速率,专注于
    的头像 发表于 12-09 10:10 1604次阅读
    从<b class='flag-5'>Wi-Fi</b> 4到<b class='flag-5'>Wi-Fi</b> 7:网速飙升40倍的无线革命