本文来源电子发烧友社区,作者:hehung, 帖子地址:https://bbs.elecfans.com/jishu_2021276_1_1.html
`尝试了开发板的RGB功能。
RGB其实就是三个端口进行控制的,分别为10,11,和12.原理图如下:
![224259d4xjee12e74pbcre.png](https://bbs.elecfans.com/data/attachment/forum/202012/21/224259d4xjee12e74pbcre.png)
我使用按键按下分别控制三个LED亮灭,程序实现上比较简单,如果扩展功能的话可以通过PWM控制这三个引脚实现亮度调节。
代码如下:
复制代码
运行效果:
![224611ftttmp0fnrfmtwh1.jpg](https://bbs.elecfans.com/data/attachment/forum/202012/21/224611ftttmp0fnrfmtwh1.jpg)
`
`尝试了开发板的RGB功能。
RGB其实就是三个端口进行控制的,分别为10,11,和12.原理图如下:
![224259d4xjee12e74pbcre.png](https://bbs.elecfans.com/data/attachment/forum/202012/21/224259d4xjee12e74pbcre.png)
我使用按键按下分别控制三个LED亮灭,程序实现上比较简单,如果扩展功能的话可以通过PWM控制这三个引脚实现亮度调节。
代码如下:
- /*this is my first application*/
- /*2020/11/08*/
- #include
- #include "ohos_init.h"
- #include "ohos_types.h"
- #include
- #include
- #include "ohos_init.h"
- #include "cmsis_os2.h"
- #include "wifiiot_gpio.h"
- #include "wifiiot_gpio_ex.h"
- #include "wifiiot_adc.h"
- #include
- #include
- #include
- #include
- #include
- #define LED_INTERVAL_TIME_US 500000 /*500ms*/
- #define LED_TASK_STACK_SIZE 512
- #define LED_TASK_PRIO 25
- #define KEY_INTERVAL_TIME_US 10000 /*10ms*/
- #define KEY_TASK_STACK_SIZE 1024
- #define KEY_TASK_PRIO 24
- #define RGB_INTERVAL_TIME_US 10000 /*10ms*/
- #define RGB_TASK_STACK_SIZE 1024
- #define RGB_TASK_PRIO 23
- static void *LedTask(const char *arg);
- static void *KeyTask(const char *arg);
- static void *RGBTask(const char *arg);
- /*LED Control*/
- enum LedState {
- LED_ON = 0,
- LED_OFF,
- LED_SPARK,
- };
- uint8_t RGB_ctrl = 0;
- static void *LedTask(const char *arg)
- {
- (void)arg;
- enum LedState g_ledState = LED_SPARK;
- g_ledState = LED_SPARK;
- while (1) {
- switch (g_ledState) {
- case LED_ON:
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 1);
- usleep(LED_INTERVAL_TIME_US);
- break;
- case LED_OFF:
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 0);
- usleep(LED_INTERVAL_TIME_US);
- break;
- case LED_SPARK:
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 0);
- usleep(LED_INTERVAL_TIME_US);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_9, 1);
- usleep(LED_INTERVAL_TIME_US);
- break;
- default:
- usleep(LED_INTERVAL_TIME_US);
- break;
- }
- }
- return NULL;
- }
- static void Led0Entry(void)
- {
- osThreadAttr_t attr;
- GpioInit();
- IoSetFunc(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_IO_FUNC_GPIO_9_GPIO);
- GpioSetDir(WIFI_IOT_IO_NAME_GPIO_9, WIFI_IOT_GPIO_DIR_OUT);
- attr.name = "LedTask";
- attr.attr_bits = 0U;
- attr.cb_mem = NULL;
- attr.cb_size = 0U;
- attr.stack_mem = NULL;
- attr.stack_size = LED_TASK_STACK_SIZE;
- attr.priority = LED_TASK_PRIO;
- if (osThreadNew((osThreadFunc_t)LedTask, NULL, &attr) == NULL) {
- printf("[Led0Task] Falied to create LedTask!
- ");
- }
- }
- SYS_RUN(Led0Entry);
- /*OLED board KEY Control - vased on ADC input*/
- static void *KeyTask(const char *arg)
- {
- (void)arg;
- WifiIotGpioValue Key_Status = WIFI_IOT_GPIO_VALUE1;
- WifiIotGpioValue Last_key_Status = WIFI_IOT_GPIO_VALUE1;
- // hi_u16 Key_adc_value = 0u;
- // hi_u32 ret = 0;
- while (1) {
- GpioGetInputVal(WIFI_IOT_IO_NAME_GPIO_5, &Key_Status);
- // printf("%d
- ", Key_Status);
- if((Key_Status == WIFI_IOT_GPIO_VALUE0) && (Last_key_Status != Key_Status))
- {
- RGB_ctrl ++;
- printf("Key pressed, RGB_ctrl = %d
- ", RGB_ctrl);
- }
- else
- {
- }
- // 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 Fail
- ");
- // }
- // 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 pressed
- ");
- // }
- // else if(Key_adc_value <= 400)
- // {
- // printf("User S1 pressed
- ");
- // }
- // else if(Key_adc_value <= 600)
- // {
- // printf("User S2 pressed
- ");
- // }
- // else
- // {
- // }
- Last_key_Status = Key_Status;
- usleep(KEY_INTERVAL_TIME_US);
- }
- return NULL;
- }
- 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!
- ");
- }
- }
- SYS_RUN(KeyEntry);
- static void *RGBTask(const char *arg)
- {
- (void)arg;
- while (1) {
- // GpioGetInputVal(WIFI_IOT_IO_NAME_GPIO_5, &Key_Status);
- switch(RGB_ctrl)
- {
- case 0:
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_12, 1);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 0);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 0);
- usleep(RGB_INTERVAL_TIME_US);
- break;
- case 1:
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_12, 0);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 1);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 0);
- usleep(RGB_INTERVAL_TIME_US);
- break;
- case 2:
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_12, 0);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 0);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 1);
- usleep(RGB_INTERVAL_TIME_US);
- break;
- case 3:
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_12, 1);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 1);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 1);
- usleep(RGB_INTERVAL_TIME_US);
- break;
- case 4:
- RGB_ctrl = 0;
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_12, 0);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, 0);
- GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, 0);
- usleep(RGB_INTERVAL_TIME_US);
- break;
- }
- }
- return NULL;
- }
- static void RGBEntry(void)
- {
- osThreadAttr_t attr;
- GpioInit();
- IoSetFunc(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_IO_FUNC_GPIO_12_GPIO);
- GpioSetDir(WIFI_IOT_IO_NAME_GPIO_12, WIFI_IOT_GPIO_DIR_OUT);
- IoSetFunc(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_IO_FUNC_GPIO_11_GPIO);
- GpioSetDir(WIFI_IOT_IO_NAME_GPIO_11, WIFI_IOT_GPIO_DIR_OUT);
- IoSetFunc(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_IO_FUNC_GPIO_10_GPIO);
- GpioSetDir(WIFI_IOT_IO_NAME_GPIO_10, WIFI_IOT_GPIO_DIR_OUT);
- // AdcRead();
- attr.name = "RGBTask";
- attr.attr_bits = 0U;
- attr.cb_mem = NULL;
- attr.cb_size = 0U;
- attr.stack_mem = NULL;
- attr.stack_size = RGB_TASK_STACK_SIZE;
- attr.priority = RGB_TASK_PRIO;
- if (osThreadNew((osThreadFunc_t)RGBTask, NULL, &attr) == NULL) {
- printf("[KeyTask] Falied to create KeyTask!
- ");
- }
- }
- SYS_RUN(RGBEntry);
运行效果:
![224611ftttmp0fnrfmtwh1.jpg](https://bbs.elecfans.com/data/attachment/forum/202012/21/224611ftttmp0fnrfmtwh1.jpg)
`
![224302cc5e3i4tinr38lcz.png](https://bbs.elecfans.com/data/attachment/forum/202012/21/224302cc5e3i4tinr38lcz.png)
![224614k4oqqofbd4dh4pdo.jpg](https://bbs.elecfans.com/data/attachment/forum/202012/21/224614k4oqqofbd4dh4pdo.jpg)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
wi-fi
+关注
关注
14文章
2175浏览量
125250 -
HarmonyOS
+关注
关注
79文章
1985浏览量
30722 -
HiSpark
+关注
关注
1文章
156浏览量
6966
发布评论请先 登录
相关推荐
Wi-Fi 8要来了!未来Wi-Fi技术演进方向揭秘
产品销售中,虽然Wi-Fi 7产品的销量份额快速从年初的个位数百分比增长至14%,但Wi-Fi 6产品的销量份额依然稳定在60%左右。如果从存量设备来看,那么Wi-Fi
![<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 7 与频率控制的关系
作者:Poornima Apte 投稿人:DigiKey 北美编辑 2024-12-18 Wi-Fi 需要使用一定范围的无线电频率才能让设备进行通信拨号。多年来,Wi-Fi 一直使用 2.4 GHz
![<b class='flag-5'>Wi-Fi</b> <b class='flag-5'>7</b> 与频率控制的关系](https://file1.elecfans.com/web3/M00/05/AA/wKgZO2eCEnaANASXAAA5GblqeqU165.jpg)
华为海思正式进入Wi-Fi FEM赛道?
转载自——钟林谈芯
昨天在网上看到一份九联UNR050 BE3600无线路由器拆机报告,Wi-Fi主芯片是海思新款Wi-Fi7芯片Hi1155,速率2.5G。
在海思AP Wi-Fi芯片系列中,还有
发表于 12-11 17:42
Wi-Fi 7与Wi-Fi 6E有什么区别
也许很多人还在考虑是否要将使用的Wi-Fi设备升级到Wi-Fi 6或Wi-Fi 6E,而这些标准的继任者却已经开始“登堂入室”了。Wi-Fi 7
网速快4倍!iPhone 16/Pro全系支持Wi-Fi 7
在安卓全面普及Wi-Fi 7一年之后,苹果终于在iPhone 16系列配备了Wi-Fi 7技术,并且是全系支持。 相比之下,前代的iPhone 15不论是标准版还是Pro版都仅仅支持
华为Wi-Fi 7全系列AP获WFA企业级WiFi7认证,业界最多
2024年是Wi-Fi 7全面商用元年,Wi-Fi联盟从年初启动Wi-Fi 7产品认证。凭借强大的研发能力和创新精神,华为不仅全球首发全场景
Wi-Fi 7为射频前端带来哪些挑战
7 相较于前一代的Wi-Fi 6 在性能和功能上有了显著提升,尤其是在速率、延迟和容量等方面,并以“极高容量”(EHT,ExtremelyHigh Throughput)为特色。
验证物联网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的诞生与发展
短距离无线通信技术有Wi-Fi、ZigBee、蓝牙以及Z-Wave,今天我们先揭开Wi-Fi的神秘面纱。Chrent短距离无线通信技术——Wi-Fi过去的20多年,Wi-Fi靠着仅有的
![<b class='flag-5'>Wi-Fi</b>的诞生与发展](https://file.elecfans.com/web2/M00/6D/35/poYBAGM1MoCAWOOXAAAqWi8Xt8w214.png)
Windows 11 Build 26063 新增 Wi-Fi 7 网络测试,速度更快
Wi-Fi 7在Wi-Fi 6与Wi-Fi 6E的基础上进行升级,提升了各个领域的无线连接性能,包括传输速率、延迟、效率、牢靠度及能耗,旨在提供更好的用户体验。
Wi-Fi 7商用元年:更宽的路应跑更好的车
来源:中国电子报 近日,Wi-Fi联盟正式确认了Wi-Fi 7认证标准,标志着无线通信技术进入了一个新阶段。随着智能设备及物联网的普及,人们对可靠、快速无线通信的需求日益增强,Wi-Fi
评论