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

    浏览量

    107999
  • PWM
    PWM
    +关注

    关注

    114

    文章

    5186

    浏览量

    213936
  • GPIO
    +关注

    关注

    16

    文章

    1204

    浏览量

    52097
  • OpenHarmony
    +关注

    关注

    25

    文章

    3722

    浏览量

    16317

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

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

收藏 人收藏

    评论

    相关推荐

    擎耀解码智能汽车可替换LED前照控制运行组成原理方案

    智能汽车可替换LED前照控制运行的原理涉及多个方面,包括自适应前照系统(AFS)的工作原理、传感器的应用、步进电机的控制
    的头像 发表于 12-10 16:04 137次阅读

    PWMLED调光中的应用

    脉冲宽度调制(PWM)是一种常用的调光威廉希尔官方网站 ,它通过改变脉冲的宽度来控制LED的亮度。这种威廉希尔官方网站 因其高效、节能和易于控制的特点,在
    的头像 发表于 11-28 16:33 764次阅读

    如何使用PWM控制电机

    PWM(脉冲宽度调制)是一种常用的电机控制方法,通过调整脉冲信号的占空比(即高电平时间占总时间的比例)来控制电机的电压和电流,从而实现对电机转速、转矩等参数的控制。以下是使用
    的头像 发表于 11-28 16:30 721次阅读

    PWM与模拟控制的比较

    PWM(Pulse Width Modulation,脉宽调制)与模拟控制是两种不同的信号控制方法,它们在多个方面存在显著的区别。以下是对这两者的比较: 一、定义与原理 PWM
    的头像 发表于 11-18 15:36 489次阅读

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

    智慧城市路灯——联网单控制系统,单控制
    的头像 发表于 11-11 12:52 348次阅读
    智慧城市路灯——<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(Pulse Width Modulation,脉冲宽度调制)是一种常见的电子控制威廉希尔官方网站 ,广泛应用于各种电子设备中,如电机控制LED调光、电源管理等。 一、
    的头像 发表于 08-08 15:08 757次阅读

    PWM控制威廉希尔官方网站 的工作原理和实现方式

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

    PWM控制器的优缺点分析

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

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

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

    光照LED控制蘑菇栽培

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

    LED条的分类

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

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

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

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

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

    led是什么意思有什么用

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

    智能家居IoT AP WiFi模块方案

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