|
搞技术的文笔不是很好,做出来的东西还是很好用的.做了个天猫精灵控制的台灯,每次打开的时候忽然亮,尤其晚上起来尿尿的时候,被灯光刺的完全没睡意了.
所以加上了PWM功能,当调节亮度的时候就会慢慢亮,或者是慢慢熄灭。
下面是PWM部分。(末尾我会将整个文件都压缩供大家观摩)
void XZ_One_PWMM(void)//uint16_t dat
{
if(millis() > time_1 + PWM_TIM)//延时,通过系统时钟的方式
{
time_1 = millis();//保存系统时间
if(PWM_Dat > New_PWM_Dat)//暗一点
{
PWM_Dat--;
analogWrite(PIN_PWM, PWM_Dat);
}
else if (PWM_Dat < New_PWM_Dat)//亮一点
{
PWM_Dat++;
analogWrite(PIN_PWM, PWM_Dat);
}
}
else if(millis() < time_1)time_1 = millis();//防止millis()溢出 ,溢出后会出现millis() < time_1 导致xit
}
#define PWM_TIM 20 //PWM调整时延时 单位 MS 毫秒
if(millis() > time_1 + PWM_TIM)//延时,通过系统时钟的方式
上面这两行是个延时的功能,利用millis()函数获取系统启动后的时间,这玩意一直往上加,大约50天后溢出。所以这句就能实现延时的功能millis() > time_1 + PWM_TIM。
就实现了每20ms改变一次灯的亮度,这样在我们眼睛看起来就是慢慢的亮。
analogWrite(PIN_PWM, PWM_Dat); 这句的作用是输出改变后的值,PWM的范围在0-255之间(我用的是esp8266 12F)
else if(millis() < time_1)time_1 = millis();如果用系统时钟做延时一定得注意溢出后的状态 要不然2个月后要狗命
|
|