本文來源電子發(fā)燒友社區(qū),作者:hehung, 帖子地址:https://bbs.elecfans.com/jishu_2021276_1_1.html
`嘗試了開發(fā)板的RGB功能。
RGB其實就是三個端口進行控制的,分別為10,11,和12.原理圖如下:
我使用按鍵按下分別控制三個LED亮滅,程序實現(xiàn)上比較簡單,如果擴展功能的話可以通過PWM控制這三個引腳實現(xiàn)亮度調節(jié)。
代碼如下:
復制代碼
運行效果:
`?
`嘗試了開發(fā)板的RGB功能。
RGB其實就是三個端口進行控制的,分別為10,11,和12.原理圖如下:
我使用按鍵按下分別控制三個LED亮滅,程序實現(xiàn)上比較簡單,如果擴展功能的話可以通過PWM控制這三個引腳實現(xiàn)亮度調節(jié)。
代碼如下:
- /*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);
運行效果:
`?
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
wi-fi
+關注
關注
14文章
2147瀏覽量
124612 -
HarmonyOS
+關注
關注
79文章
1979瀏覽量
30274 -
HiSpark
+關注
關注
1文章
156瀏覽量
6938
發(fā)布評論請先 登錄
相關推薦
Wi-Fi 8要來了!未來Wi-Fi技術演進方向揭秘
產(chǎn)品銷售中,雖然Wi-Fi 7產(chǎn)品的銷量份額快速從年初的個位數(shù)百分比增長至14%,但Wi-Fi 6產(chǎn)品的銷量份額依然穩(wěn)定在60%左右。如果從存量設備來看,那么Wi-Fi
華為海思正式進入Wi-Fi FEM賽道?
轉載自——鐘林談芯
昨天在網(wǎng)上看到一份九聯(lián)UNR050 BE3600無線路由器拆機報告,Wi-Fi主芯片是海思新款Wi-Fi7芯片Hi1155,速率2.5G。
在海思AP Wi-Fi芯片系列中,還有
發(fā)表于 12-11 17:42
從Wi-Fi 4到Wi-Fi 7:網(wǎng)速飆升40倍的無線革命
1 Wi-Fi技術的快速發(fā)展 每一代新的Wi-Fi協(xié)議發(fā)布,都會帶來更高的無線速率。 ? 從Wi-Fi 4到Wi-Fi 7:無線網(wǎng)絡技術顯著
Wi-Fi 7有哪些底層技術優(yōu)勢
您在多個Wi-Fi行業(yè)活動中代表LitePoint。Wi-Fi 7帶來了哪些新穎且有趣的特點?
Wi-Fi 7與Wi-Fi 6E有什么區(qū)別
也許很多人還在考慮是否要將使用的Wi-Fi設備升級到Wi-Fi 6或Wi-Fi 6E,而這些標準的繼任者卻已經(jīng)開始“登堂入室”了。Wi-Fi 7
網(wǎng)速快4倍!iPhone 16/Pro全系支持Wi-Fi 7
在安卓全面普及Wi-Fi 7一年之后,蘋果終于在iPhone 16系列配備了Wi-Fi 7技術,并且是全系支持。 相比之下,前代的iPhone 15不論是標準版還是Pro版都僅僅支持
華為獲得全球首個國際Wi-Fi聯(lián)盟WFA企業(yè)級Wi-Fi 7認證!
Wi-Fi聯(lián)盟已發(fā)布Wi-Fi 7認證標準,華為是第一批送測廠商,獲得業(yè)界首個企業(yè)級Wi-Fi 7 的W
驗證物聯(lián)網(wǎng)Wi-Fi HaLow用例的MM6108-EKH08開發(fā)套件來啦
驗證物聯(lián)網(wǎng)Wi-Fi HaLow用例的MM6108-EKH08開發(fā)套件來啦 MM6108-EKH08開發(fā)套件專為驗證物聯(lián)網(wǎng)Wi-Fi HaLow用例而設計。該
Wi-Fi HaLow和傳統(tǒng)Wi-Fi的區(qū)別
Wi-Fi HaLow和傳統(tǒng)Wi-Fi的區(qū)別? Wi-Fi是一種無線網(wǎng)絡技術,可以連接到互聯(lián)網(wǎng)或局域網(wǎng),為用戶提供無線上網(wǎng)的便利。隨著科技的發(fā)展和互聯(lián)網(wǎng)的普及,Wi-Fi也在不斷演進和
康普攜手Wi-Fi聯(lián)盟,RUCKUS Wi-Fi 7系列接入點成Wi-Fi
康普高級副總裁兼網(wǎng)絡、智能蜂窩和安全解決方案總裁Bart Giordano對此表示: “我們非常榮幸能與Wi-Fi Alliance形成長期合作伙伴關系,將我們的RUCKUS Wi-Fi 7 接入點平臺作為
BT Wi-Fi模式是否可以通過ModustoolBox對套件進行編程來實現(xiàn)?
想配置用于分析 CYW43439 的 CY8CPROTO-062S2-43439 原型開發(fā)套件。
瀏覽文檔我無法弄清楚如何在不同的 Wi-Fi 和藍牙模式(電源模式、連接模式等)下配置套件。
在
發(fā)表于 01-22 06:19
Wi-Fi 7迎來終端爆發(fā)元年,設備廠如何搶占市場先機?
電子發(fā)燒友網(wǎng)報道(文/吳子鵬)作為“首個專為 6GHz頻段打造”的標準,Wi-Fi 7的發(fā)展廣受關注。發(fā)展至今,Wi-Fi 7已經(jīng)有很多“元年”的概念。比如,2022年是
聯(lián)發(fā)科發(fā)布Wi-Fi 7產(chǎn)品,今年上市助力VR游戲與遠程辦公
聯(lián)發(fā)科宣布攜手 Wi-Fi 聯(lián)盟(WFA)并在CES 2024 亮相首批取得 Wi-Fi 7 全面認證的產(chǎn)品。聯(lián)發(fā)科預期,今年將會有更多搭載 Wi-Fi
MediaTek攜手Wi-Fi聯(lián)盟,推動Wi-Fi 7無線連接技術的廣泛應用
對此,Wi-Fi聯(lián)盟的總裁兼首席執(zhí)行官 Kevin Robinson表示:“過去二十年來,MediaTek與Wi-Fi聯(lián)盟攜手合作,成功地將互通性優(yōu)異、性能可靠的芯片組解決方案推向市場。我們非常高興MediaTek能加入我們的Wi-Fi
評論