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

    文章

    1604

    浏览量

    111123
  • PWM
    PWM
    +关注

    关注

    116

    文章

    5847

    浏览量

    223817
  • GPIO
    +关注

    关注

    16

    文章

    1313

    浏览量

    55727
  • OpenHarmony
    +关注

    关注

    31

    文章

    3926

    浏览量

    20720

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    LuatOS中PWM实现LED亮度调节与呼吸的实战教程

    PWMLED亮度调节和呼吸效果实现方面有着广泛应用。在LuatOS环境中,如何高效运用PWM功能是开发者需要掌握的关键。本实战教程将通过具体案例,引导开发者快速上手,轻松实现
    的头像 发表于 11-11 19:05 7158次阅读
    LuatOS中<b class='flag-5'>PWM</b>实现<b class='flag-5'>LED</b>亮度调节与呼吸<b class='flag-5'>灯</b>的实战教程

    LED带离线语音控制方案WTK6900P

    在家居装饰以及部分公共空间装饰已LED带经成为了一种主流的灯饰方案,今天我们主要讲的是家居内部空间的控制,因为公共部分的灯具不适用语音
    的头像 发表于 09-15 17:31 690次阅读

    如何使用 MS51 PWM 通过 UART 控制 RGB LED

    使用 MS51 PWM 通过 UART 控制 RGB LED
    发表于 08-20 07:24

    【高云GW5AT-LV60 开发套件试用体验】三、LED控制实验

    【高云GW5AT-LV60 开发套件试用体验】三、LED控制实验 高云软件开发环境搭建好以后,进行正式的FPGA编程前,必须使用安装好的Gowin 软件,结合高云GW5AT-LV60
    发表于 07-21 05:57

    NB-IoT控制器:智慧照明的“神经末梢”

    的精确控制与管理。 工作原理 NB - IoT控制器内部集成了传感器、通信模块以及控制芯片
    的头像 发表于 04-27 16:33 482次阅读

    LED6001 PWM调光单通道LED驱动器,具有集成增压控制器数据手册

    的亮度可以通过两个独立的引脚通过 PWM 调光和模拟调光(10:1 比率)来控制。通过与 LED 串串联并由专用引脚直接驱动的 MOSFET,可以获得增强的
    的头像 发表于 04-09 17:37 911次阅读
    <b class='flag-5'>LED</b>6001 <b class='flag-5'>PWM</b>调光单通道<b class='flag-5'>LED</b>驱动器,具有集成增压<b class='flag-5'>控制</b>器数据手册

    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制PWM外设

    /rk2206/samples/b16_iot_pwm 2、基础知识 PWM在日常设备中非常常见,以下我们将演示IoT库的PWM接口如何进行PWM
    发表于 04-09 09:37

    ALED6001 带集成式升压控制器的车规级PWM可调光单通道LED驱动器数据手册

    降压-升压。LED亮度的PWM调光通过与LED带串联的外部MOSFET来实现,并由专用引脚直接驱动。管理LED电流设置的引脚(通常与外部电
    的头像 发表于 04-08 18:00 952次阅读
    ALED6001 带集成式升压<b class='flag-5'>控制</b>器的车规级<b class='flag-5'>PWM</b>可调光单通道<b class='flag-5'>LED</b>驱动器数据手册

    基于NB-IoT控制器的智慧路灯应用案例及效果分析

    基于NB-IoT控制器的智慧路灯应用案例及效果分析
    的头像 发表于 04-07 15:16 801次阅读
    基于NB-<b class='flag-5'>IoT</b>单<b class='flag-5'>灯</b><b class='flag-5'>控制</b>器的智慧路灯应用案例及效果分析

    物联网单控制器产品简介

    ,通讯效率高,抗干扰能力强,用户体验好,并能更好的满足智慧路灯的要求。因此物联网单控制器替代PLC单控制器将会成为趋势。 二、物联网单
    的头像 发表于 04-03 11:01 820次阅读
    物联网单<b class='flag-5'>灯</b><b class='flag-5'>控制</b>器产品简介

    物联网单控制联网单控制

    物联网单控制联网单控制
    的头像 发表于 04-03 10:53 639次阅读
    物联网单<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>器

    【幸狐Omni3576边缘计算套件试用体验】PWM呼吸

    【幸狐Omni3576边缘计算套件试用体验】PWM呼吸 本文介绍了幸狐Omni3576边缘计算套件实现 GPIO 输出电平的控制
    发表于 04-03 04:59

    【瑞萨RA2L1入门学习】01. PWM 呼吸

    占空比的调节就是实现呼吸效果的关键。通过控制PWM信号的占空比,可以实现对LED亮度的连续调节。在递增占空比阶段,
    发表于 03-07 11:43

    如何化解智能控制难题?AI大模型让智能控制告别 “死板” !

    在物联网(IoT)技术飞速发展的今天,智能家居设备已深度融入我们的日常生活。智能、智能插座、智能门锁等产品,让生活变得更加便捷。然而,传统的智能设备控制方式,尤其是基于规则匹配的模式,在理解用户
    的头像 发表于 02-13 18:03 1149次阅读
    如何化解智能<b class='flag-5'>灯</b><b class='flag-5'>控制</b>难题?AI大模型让智能<b class='flag-5'>灯</b><b class='flag-5'>控制</b>告别 “死板” !

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

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