0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

WiFi-IoT套件的LED燈控制以及PWM控制

電子工程師 ? 來(lái)源:HarmonyOS社區(qū) ? 作者:HarmonyOS社區(qū) ? 2021-01-13 10:00 ? 次閱讀

功能很簡(jiǎn)單,就是操作GPIO控制LED亮滅以及PWM輸出控制LED明亮度,但是在這個(gè)過(guò)程中遇到很多問(wèn)題。

首先是GPIO輸出高低電平控制LED燈亮滅。查看官方文提供的原理圖,找到燈部分的電路。發(fā)現(xiàn)燈板其實(shí)有兩塊,只是其中一塊是交通燈板,另外一塊是三色RGB燈??刂埔_完全相同。這里以RGB燈板為例。

根據(jù)接口再去底板接口那里去查看,可以對(duì)應(yīng)出:

紅色--GPIO10_PWM1

綠色--GPIO11_PWM2

藍(lán)色--GPIO12_PWM3

核心板的LED1--GPIO9

接下來(lái)的修改就是直接在SDK中的ap/iothardware/led_example.c中進(jìn)行修改了。里面已經(jīng)有了GPIO的初始化以及調(diào)用了,這里只是增加和修改引腳而已。

注意:例程里面用的GPIO9,也就是核心板上的LED1.如果插上的是RGB燈板,則LED1始終亮,不會(huì)隨引腳改變而改變。這一點(diǎn)讓我懷疑代碼懷疑了很久,后來(lái)查電路圖才發(fā)現(xiàn)RGB燈板GPIO9引腳接了紅外檢測(cè)引腳。這個(gè)引腳是上拉的,也就是說(shuō)就是主控下拉讓LED1滅,實(shí)際上也不會(huì)滅。

34a6eeca-5146-11eb-8b86-12bb97331649.png

到這里操作GPIO就完成了,很簡(jiǎn)單,就在官方的例程里面修改就行了。但是,還沒(méi)結(jié)束,上面也說(shuō)了,RGB這三個(gè)引腳是復(fù)用功能,可以復(fù)用PWM輸出功能,這里繼續(xù)將代碼改為PWM控制。

首先初始化GPIO,然后將這3個(gè)引腳設(shè)為PWM復(fù)用輸出功能,并指定PWM的時(shí)鐘。

#define LED_RED WIFI_IOT_IO_NAME_GPIO_10#define LED_GREEN WIFI_IOT_IO_NAME_GPIO_11#define LED_BLUE WIFI_IOT_IO_NAME_GPIO_12

GpioInit();

IoSetFunc(LED_RED, WIFI_IOT_IO_FUNC_GPIO_10_PWM1_OUT);

GpioSetDir(LED_RED, WIFI_IOT_GPIO_DIR_OUT);

IoSetFunc(LED_GREEN, WIFI_IOT_IO_FUNC_GPIO_11_PWM2_OUT);

GpioSetDir(LED_GREEN, WIFI_IOT_GPIO_DIR_OUT);

IoSetFunc(LED_BLUE, WIFI_IOT_IO_FUNC_GPIO_12_PWM3_OUT);

GpioSetDir(LED_BLUE, WIFI_IOT_GPIO_DIR_OUT);

hi_pwm_init(HI_PWM_PORT_PWM1);

hi_pwm_init(HI_PWM_PORT_PWM2);

hi_pwm_init(HI_PWM_PORT_PWM3);

hi_pwm_set_clock(PWM_CLK_160M);

完成初始化后就是功能了,控制pwm占空比調(diào)節(jié)led亮度。

void LedPWM(uint16 pwm_r, uint16 pwm_g, uint16 pwm_b){

hi_pwm_start(HI_PWM_PORT_PWM1, pwm_r, 1600);

hi_pwm_start(HI_PWM_PORT_PWM2, pwm_g, 1600);

hi_pwm_start(HI_PWM_PORT_PWM3, pwm_b, 1600);}

這一段在while(1)里面循環(huán)執(zhí)行,改變PWM占空比的值。

switch(sta) { case 0: if(pwm_R 《 1500) pwm_R += 5; else { sta = 1; pwm_R = 2; pwm_G = 2; pwm_B = 2; }

break; case 1: if(pwm_G 《 1200) pwm_G += 5; else { sta = 2; pwm_R = 2; pwm_G = 2; pwm_B = 2; }

break; case 2: if(pwm_B 《 1200) pwm_B += 5; else { sta = 0; pwm_R = 2; pwm_G = 2; pwm_B = 2; }

break; } LedPWM(pwm_R, pwm_G, pwm_B); usleep(2);

PWM相關(guān)的函數(shù)都是在hi_PWM.h中定義的,所以要引用這個(gè)頭文件,另外這個(gè)例子所在的BUILD.gn文件中也要新增其所在的位置:“//vendor/hisi/hi3861/hi3861//include”。

在app所在的BUILD.gn里面的features項(xiàng)目中加入新增的led_example.c所在的路徑:“iothardware:led_example”,到這里貌似都完成了設(shè)置以及實(shí)現(xiàn)。但是編譯的時(shí)候直接報(bào)錯(cuò):undefined reference to hi_PWM_start以及其他幾個(gè)函數(shù)的錯(cuò)誤。

這個(gè)問(wèn)題糾結(jié)了我好久。后來(lái)還是看連志安的ole驅(qū)動(dòng)中的IIC操作才知道要在hi3861驅(qū)動(dòng)中配置打開(kāi)PWM功能才會(huì)編譯PWM部分進(jìn)代碼,不然始終找不到具體的實(shí)現(xiàn)。編譯通不過(guò)。

具體在vendor/hisi/hi3861/hi3861/build/config/usr_config.mk文件中新增CONFIG_PWM_SUPPORT=y 才行。

不熟悉整個(gè)框架遇到問(wèn)題并不好處理。

另外調(diào)試PWM過(guò)程中發(fā)現(xiàn)hi_PWM_start函數(shù)中的duty參數(shù)不要設(shè)置為0。在調(diào)試3色時(shí)候兩色設(shè)為0,實(shí)際上是白色,都亮了。后來(lái)設(shè)置為2就ok,三色互不影響。

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • led燈
    +關(guān)注

    關(guān)注

    22

    文章

    1592

    瀏覽量

    108184
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    114

    文章

    5195

    瀏覽量

    214348
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1215

    瀏覽量

    52215
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3731

    瀏覽量

    16425

原文標(biāo)題:WiFi-IoT套件的LED燈控制以及PWM控制

文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    擎耀解碼智能汽車(chē)可替換LED前照控制運(yùn)行組成原理方案

    智能汽車(chē)可替換LED前照控制運(yùn)行的原理涉及多個(gè)方面,包括自適應(yīng)前照系統(tǒng)(AFS)的工作原理、傳感器的應(yīng)用、步進(jìn)電機(jī)的控制
    的頭像 發(fā)表于 12-10 16:04 ?169次閱讀

    PWMLED調(diào)光中的應(yīng)用

    脈沖寬度調(diào)制(PWM)是一種常用的調(diào)光技術(shù),它通過(guò)改變脈沖的寬度來(lái)控制LED的亮度。這種技術(shù)因其高效、節(jié)能和易于控制的特點(diǎn),在
    的頭像 發(fā)表于 11-28 16:33 ?1084次閱讀

    如何使用PWM控制電機(jī)

    PWM(脈沖寬度調(diào)制)是一種常用的電機(jī)控制方法,通過(guò)調(diào)整脈沖信號(hào)的占空比(即高電平時(shí)間占總時(shí)間的比例)來(lái)控制電機(jī)的電壓和電流,從而實(shí)現(xiàn)對(duì)電機(jī)轉(zhuǎn)速、轉(zhuǎn)矩等參數(shù)的控制。以下是使用
    的頭像 發(fā)表于 11-28 16:30 ?1193次閱讀

    PWM與模擬控制的比較

    PWM(Pulse Width Modulation,脈寬調(diào)制)與模擬控制是兩種不同的信號(hào)控制方法,它們?cè)诙鄠€(gè)方面存在顯著的區(qū)別。以下是對(duì)這兩者的比較: 一、定義與原理 PWM
    的頭像 發(fā)表于 11-18 15:36 ?609次閱讀

    智慧城市路燈——聯(lián)網(wǎng)單控制系統(tǒng),單控制

    智慧城市路燈——聯(lián)網(wǎng)單控制系統(tǒng),單控制
    的頭像 發(fā)表于 11-11 12:52 ?405次閱讀
    智慧城市路燈——<b class='flag-5'>燈</b>聯(lián)網(wǎng)單<b class='flag-5'>燈</b><b class='flag-5'>控制</b>系統(tǒng),單<b class='flag-5'>燈</b><b class='flag-5'>控制</b>器

    PWM控制原理及電路應(yīng)用詳解

    PWM(脈沖寬度調(diào)制)是用脈沖來(lái)輸出模擬信號(hào)的一種技術(shù),其通過(guò)對(duì)一系列脈沖的寬度進(jìn)行調(diào)制,以產(chǎn)生等效的目標(biāo)波形,廣泛應(yīng)用于測(cè)量、通信、開(kāi)關(guān)電源、電機(jī)控制等領(lǐng)域。本文將對(duì)PWM技術(shù)的基本控制
    的頭像 發(fā)表于 10-10 18:10 ?1269次閱讀
    <b class='flag-5'>PWM</b><b class='flag-5'>控制</b>原理及電路應(yīng)用詳解

    如何實(shí)現(xiàn)pwm控制功能

    PWM(Pulse Width Modulation,脈沖寬度調(diào)制)是一種常見(jiàn)的電子控制技術(shù),廣泛應(yīng)用于各種電子設(shè)備中,如電機(jī)控制、LED調(diào)光、電源管理等。 一、
    的頭像 發(fā)表于 08-08 15:08 ?860次閱讀

    PWM控制技術(shù)的工作原理和實(shí)現(xiàn)方式

    PWM(Pulse Width Modulation)控制技術(shù),即脈沖寬度調(diào)制技術(shù),是一種廣泛應(yīng)用于電力電子、電機(jī)控制、LED照明、電源管理等領(lǐng)域的重要技術(shù)。它通過(guò)調(diào)節(jié)脈沖信號(hào)的寬度來(lái)
    的頭像 發(fā)表于 06-04 15:12 ?1765次閱讀

    PWM控制器的優(yōu)缺點(diǎn)分析

    PWM(脈寬調(diào)制)控制器是一種廣泛應(yīng)用于電力電子、電機(jī)控制、LED照明、通訊等領(lǐng)域的設(shè)備。它通過(guò)改變脈沖寬度來(lái)控制電力設(shè)備的輸出功率,具有精
    的頭像 發(fā)表于 06-04 15:07 ?1970次閱讀

    PWM控制電機(jī)轉(zhuǎn)速的原理與實(shí)現(xiàn)

    PWM(脈寬調(diào)制)是一種廣泛應(yīng)用于電機(jī)控制領(lǐng)域的調(diào)制技術(shù)。它通過(guò)調(diào)節(jié)脈沖信號(hào)的占空比,實(shí)現(xiàn)對(duì)電機(jī)轉(zhuǎn)速的精確控制。PWM控制電機(jī)轉(zhuǎn)速的方法因其
    的頭像 發(fā)表于 06-03 17:23 ?6457次閱讀

    光照LED控制蘑菇栽培

    ,蘑菇在衛(wèi)生控制設(shè)施中生長(zhǎng),以防止有害細(xì)菌的影響。蘑菇屬于真菌,不會(huì)進(jìn)行光合作用,因?yàn)樽贤饩€(xiàn)會(huì)抑制菌絲體的生長(zhǎng)。栽培期間在光線(xiàn)照射有限的暗室中進(jìn)行,在子實(shí)體發(fā)育生長(zhǎng)階段,常用熒光作為光源來(lái)控制光照。 盡管蘑菇不進(jìn)行光合作用,但
    的頭像 發(fā)表于 05-11 11:17 ?441次閱讀

    LED條的分類(lèi)

    為一體驅(qū)動(dòng)板(板只有LED光源,就沒(méi)有任何電子元器件)。②:精密電子元器件恒流驅(qū)動(dòng)就是板+恒流IC+LED光源為一體。③:CV=恒壓
    的頭像 發(fā)表于 02-27 20:13 ?1726次閱讀
    <b class='flag-5'>LED</b><b class='flag-5'>燈</b>條的分類(lèi)

    nb-iot控制器的基本功能 nb-iot控制器有哪些優(yōu)點(diǎn)?

    nb-iot控制器的基本功能 nb-iot控制器有哪些優(yōu)點(diǎn)? NB-
    的頭像 發(fā)表于 02-03 13:59 ?902次閱讀

    nb-iot控制器中的nb-iot是什么?

    nb-iot控制器中的nb-iot是什么? NB-IoT是一種低功耗寬帶物聯(lián)網(wǎng)技術(shù),主要應(yīng)用于物聯(lián)網(wǎng)設(shè)備的通信連接。它基于現(xiàn)有的蜂窩網(wǎng)絡(luò)
    的頭像 發(fā)表于 02-03 11:34 ?1645次閱讀

    led是什么意思有什么用

    LED是一種以LED(發(fā)光二極管)為光源的照明設(shè)備。LED燈具有很高的能效、長(zhǎng)壽命、環(huán)保等特點(diǎn),因此在照明領(lǐng)域得到廣泛應(yīng)用。本文將詳細(xì)介紹LED
    的頭像 發(fā)表于 02-01 17:27 ?2685次閱讀