【润和Neptune测评】六 双色调光LED灯
[复制链接]
- 项目简介
本项目硬件环境:Neptune(W800)开发板,黄白双色灯板,调光驱动板,12V开关电源。
驱动板实际就是两个大MOS管
3W灯板,某宝购买的
软件环境:HarmonyOS,Neptune 编译工具链 csky-abiv2-elf-gcc(UBUNTU20.04),调试烧录工具SecureCRT。
主要实现功能:WiFi连接,TCP客户端联网,PWM控制,用户按键,学码配网,双色灯色温调节。
- 调光
通过控制两路PWM,而控制黄白双色LED亮度调节,实现我们想要的亮度,主要调节两个参数,一个是色温调节,控制黄白色PWM混色,实现冷暖光调节,一个是亮度调节,即调节灯亮暗大小,亮度一定的时候,色温只能在这个亮度下变化,具体调节公式参考下图:(别问我什么原理,我也是参考来的,知道知道原理的兄弟可以留言讲解下~)
箭头两个公式是计算两种颜色的百分占比,百分比的最大值我是按照1000来计算,也只是为了方便,如果想要步进值为0.1的时候,不出现小数点的浮点运算,下面还转成实际值,因为PWM值只有一个8位寄存器最大只有255,如果这个值能设置1000的就没有这个麻烦,百分一就是2.55。
这里可能会有个疑问,为什么要步进1%呢,如果是遥控器,调个灯,手不得按废?我一次步进10%不行吗?答案是可以的,有的一次甚至调20%,但是步进太大,调节灯会看到明显的阶梯感,例如手速最快是100ms,调10%,我可以分成10步,每10ms步进1%,这样手即不按废,调节也会感觉很平滑,是这里用的,只是一些细节问题。代码里定时任务,根据设定的目标值,执行步进值就行。
- 协议
我只是简单的定个通信协议,协议只是为了两边沟通方便,协议格式:
功能码是区分不同功能00是亮度调节,01是色温调节,02是设置固定模式,03是闪烁,后面还有子功能,比如控制加减,这里面还有个ID和学码,下面会讲解,大家可以根据自己的实际需求更改。
- 学码
为什么要学码呢?学码是配对,通过绑定指定设备,值执行它们的指令,允许它们控制,自己家里的灯,我们只能自己控制,如果没有学码配对,知道协议谁都能控制,那就好乱了套,大家也不会希望这样的事情发生,学码实际就是接收控制端的ID保存下来,然后收到命令之后匹配,怎么进入学码呢?常规做法是5秒内快速开关灯3次,这个需要保存数据,也可以通过接收特定广播指令,进入学码状态,然后这里我没有写存FLASH功能,做了一个每次开机要长按板子按键3秒,进入学码状态,每次重启都有执行这个操作,学码后才能控制灯。
- 测试
测试给大家看看颜色变换的图吧,摄像头下,这个灯看不出效果(可能我手机像素不行…^-^),后面放个视频,大家看看有调节效果就好,测试得注意,虽然只有3W,但是非常的烫,不要轻易用手去摸,还有LED非常刺眼,经常看要配好墨镜。
由于不会写APP,所以通过网络助手来,模拟控制设备发指令控制灯。每次上电或者清码后都需要,长按3秒用户按键,进入学码状态,学码后才能控制。
测试视频地址:【润和Neptune测评】六 双色调光LED灯-测试视频 - 【润和Neptune测评】六 双色调光LED灯 - EEWORLD大学堂
我把源代码上传,大家可自行测试~只是灯部分的代码,并不是整个工程,需加入工程自行编译~
- 心得
润和Neptune(W800)开发板,虽然简单,但是做物联网应用该有的接口,基本齐全了,W800的外设设计也还算优秀。
鸿蒙比较火热,也可能是觉得这是属于我们自己的操作系统,不管怎么样都要去使用,支持,学习,相信它也足够优秀,不然早就销声匿迹了,我是想着学习新的东西,因为出来工作已经10年了,但工作经验感觉也就前面几年学的,在一个公司呆久了,前面一两年熟悉了公司产品的开发,后面只是相同的东西翻来覆去而已,并没有多少实质的提升,有种混着等si的感觉,这也是我想逼着自己学习新的东西的原因,也许是人到中年的一种焦虑,一种挣扎吧!
关于入门,系统我是把他当作一个工具,学习就是学习这个工具的使用,但是这个工具学习需要一个环境,就是我们搭建的开发环境,就像我们开始学单片机,要安装keil,给你做好了点下一步,装好后新建好工程,之后这个keil你用的最多的就是点击编译,查看编译输出窗口,这个开发环境装好了也一样,只是稍微复杂一点,换到Linux下而已,很多初学者往往卡在安装环境的路上就放弃了,keil没装上,说学习单片机怎么这么难!
项目开发需要的是我们利用这些工具,组织逻辑,完成我们需要的功能,工具的熟悉程度,关系到我们项目开发的速度和质量,以及遇到问题是解决的速度,要说鸿蒙学到什么程度算是掌握,我也说不出来,我只是做些简单应用,知道在哪里添加我的代码,怎么样能用他们的库。跑出我要的逻辑而已,目前为止,内核以及底层我也一概不知,有空在研究,工科生,语言组织能力也就这样了,初学者能看懂的将就着看,有大神路过看看就好,请轻拍砖~我只是个业余的!
|