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

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

3天内不再提示

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

电子工程师 来源:HarmonyOS社区 作者:HarmonyOS社区 2021-01-13 10:00 次阅读

功能很简单,就是操作GPIO控制LED亮灭以及PWM输出控制LED明亮度,但是在这个过程中遇到很多问题。

首先是GPIO输出高低电平控制LED灯亮灭。查看官方文提供的原理图,找到灯部分的电路。发现灯板其实有两块,只是其中一块是交通灯板,另外一块是三色RGB灯。控制引脚完全相同。这里以RGB灯板为例。

根据接口再去底板接口那里去查看,可以对应出:

红色--GPIO10_PWM1

绿色--GPIO11_PWM2

蓝色--GPIO12_PWM3

核心板的LED1--GPIO9

接下来的修改就是直接在SDK中的ap/iothardware/led_example.c中进行修改了。里面已经有了GPIO的初始化以及调用了,这里只是增加和修改引脚而已。

注意:例程里面用的GPIO9,也就是核心板上的LED1.如果插上的是RGB灯板,则LED1始终亮,不会随引脚改变而改变。这一点让我怀疑代码怀疑了很久,后来查电路图才发现RGB灯板GPIO9引脚接了红外检测引脚。这个引脚是上拉的,也就是说就是主控下拉让LED1灭,实际上也不会灭。

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

到这里操作GPIO就完成了,很简单,就在官方的例程里面修改就行了。但是,还没结束,上面也说了,RGB这三个引脚是复用功能,可以复用PWM输出功能,这里继续将代码改为PWM控制。

首先初始化GPIO,然后将这3个引脚设为PWM复用输出功能,并指定PWM的时钟

#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占空比调节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)里面循环执行,改变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相关的函数都是在hi_PWM.h中定义的,所以要引用这个头文件,另外这个例子所在的BUILD.gn文件中也要新增其所在的位置:“//vendor/hisi/hi3861/hi3861//include”。

在app所在的BUILD.gn里面的features项目中加入新增的led_example.c所在的路径:“iothardware:led_example”,到这里貌似都完成了设置以及实现。但是编译的时候直接报错:undefined reference to hi_PWM_start以及其他几个函数的错误。

这个问题纠结了我好久。后来还是看连志安的ole驱动中的IIC操作才知道要在hi3861驱动中配置打开PWM功能才会编译PWM部分进代码,不然始终找不到具体的实现。编译通不过。

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

不熟悉整个框架遇到问题并不好处理。

另外调试PWM过程中发现hi_PWM_start函数中的duty参数不要设置为0。在调试3色时候两色设为0,实际上是白色,都亮了。后来设置为2就ok,三色互不影响。

责任编辑:lq

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

    关注

    22

    文章

    1592

    浏览量

    107796
  • PWM
    PWM
    +关注

    关注

    114

    文章

    5125

    浏览量

    213290
  • GPIO
    +关注

    关注

    16

    文章

    1191

    浏览量

    51869
  • OpenHarmony
    +关注

    关注

    25

    文章

    3650

    浏览量

    16104

原文标题:WiFi-IoT套件的LED灯控制以及PWM控制

文章出处:【微信号:HarmonyOS_Community,微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    智慧城市路灯——联网单控制系统,单控制

    智慧城市路灯——联网单控制系统,单控制
    的头像 发表于 11-11 12:52 106次阅读
    智慧城市路灯——<b class='flag-5'>灯</b>联网单<b class='flag-5'>灯</b><b class='flag-5'>控制</b>系统,单<b class='flag-5'>灯</b><b class='flag-5'>控制</b>器

    PWM控制原理及电路应用详解

    PWM(脉冲宽度调制)是用脉冲来输出模拟信号的一种技术,其通过对一系列脉冲的宽度进行调制,以产生等效的目标波形,广泛应用于测量、通信、开关电源、电机控制等领域。本文将对PWM技术的基本控制
    的头像 发表于 10-10 18:10 606次阅读
    <b class='flag-5'>PWM</b><b class='flag-5'>控制</b>原理及电路应用详解

    PWM控制芯片的特点和组成结构

    PWM(Pulse Width Modulation,脉宽调制)控制芯片在电子领域中扮演着至关重要的角色,尤其是在电源管理、LED照明、电机控制等领域。这类芯片通过调节脉冲信号的宽度(
    的头像 发表于 08-26 10:27 1052次阅读

    如何实现pwm控制功能

    PWM(Pulse Width Modulation,脉冲宽度调制)是一种常见的电子控制技术,广泛应用于各种电子设备中,如电机控制LED调光、电源管理等。 一、
    的头像 发表于 08-08 15:08 585次阅读

    PWM控制技术的工作原理和实现方式

    PWM(Pulse Width Modulation)控制技术,即脉冲宽度调制技术,是一种广泛应用于电力电子、电机控制LED照明、电源管理等领域的重要技术。它通过调节脉冲信号的宽度来
    的头像 发表于 06-04 15:12 1366次阅读

    PWM控制器的优缺点分析

    PWM(脉宽调制)控制器是一种广泛应用于电力电子、电机控制LED照明、通讯等领域的设备。它通过改变脉冲宽度来控制电力设备的输出功率,具有精
    的头像 发表于 06-04 15:07 1499次阅读

    PWM控制电机转速的原理与实现

    PWM(脉宽调制)是一种广泛应用于电机控制领域的调制技术。它通过调节脉冲信号的占空比,实现对电机转速的精确控制PWM控制电机转速的方法因其
    的头像 发表于 06-03 17:23 5339次阅读

    光照LED控制蘑菇栽培

    ,蘑菇在卫生控制设施中生长,以防止有害细菌的影响。蘑菇属于真菌,不会进行光合作用,因为紫外线会抑制菌丝体的生长。栽培期间在光线照射有限的暗室中进行,在子实体发育生长阶段,常用荧光作为光源来控制光照。 尽管蘑菇不进行光合作用,但
    的头像 发表于 05-11 11:17 368次阅读

    PWM亮度控制的白色LED驱动器TPS6116xA数据表

    电子发烧友网站提供《带PWM亮度控制的白色LED驱动器TPS6116xA数据表.pdf》资料免费下载
    发表于 03-13 09:34 0次下载
    带<b class='flag-5'>PWM</b>亮度<b class='flag-5'>控制</b>的白色<b class='flag-5'>LED</b>驱动器TPS6116xA数据表

    LED条的分类

    为一体驱动板(板只有LED光源,就没有任何电子元器件)。②:精密电子元器件恒流驱动就是板+恒流IC+LED光源为一体。③:CV=恒压
    的头像 发表于 02-27 20:13 1509次阅读
    <b class='flag-5'>LED</b><b class='flag-5'>灯</b>条的分类

    nb-iot控制器的基本功能 nb-iot控制器有哪些优点?

    nb-iot控制器的基本功能 nb-iot控制器有哪些优点? NB-
    的头像 发表于 02-03 13:59 750次阅读

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

    nb-iot控制器中的nb-iot是什么? NB-IoT是一种低功耗宽带物联网技术,主要应用于物联网设备的通信连接。它基于现有的蜂窝网络
    的头像 发表于 02-03 11:34 1497次阅读

    led是什么意思有什么用

    LED是一种以LED(发光二极管)为光源的照明设备。LED灯具有很高的能效、长寿命、环保等特点,因此在照明领域得到广泛应用。本文将详细介绍LED
    的头像 发表于 02-01 17:27 2187次阅读

    求购两个LED呼吸控制

    某宝某多买了几个控制器发现LED的亮度变化在低占空比的时候,变化很明显,而在高占空比的时候反而变化很小,导致呼吸表现呼吸不均匀的现象,我想要的是控制器能做到
    发表于 01-31 21:54

    智能家居IoT AP WiFi模块方案

    智能网关在智能家居应用中,需要能够实现数据传输,数据上传以及控制指令下发,这部分的话,就要求WiFi模块既可以做AP,又可以做Station,因此会优先选择带UART接口的IoT AP
    的头像 发表于 01-09 11:35 1540次阅读
    智能家居<b class='flag-5'>IoT</b> AP <b class='flag-5'>WiFi</b>模块方案