前言
最近看到家里面安装的节能灯,白天自动熄灭,天黑逐渐变亮,想到之前学习的时候老师布置作业用PWM控制LED,写个智能路灯并用进度条显示,今晚趁着有心情把内容改改,发上论坛
一、智能路灯是什么?
现在电子技术越来越成熟,各式各样的产品转向智能化,连路灯也不例外,变成了一个稍微智能的灯,在天逐渐变亮时,灯光渐渐变暗,天黑与之相反,此设计大大的人性化和节能化的运用产品。
二、使用步骤
1.主程序
我这里的亮度和进度条就用档位控制(5个档位),用档位控制其实更智能和节能,在一个设置的档位范围,防止外在环境的一点小变化而引发微控制器(MCU)程序发生变化,产生额外的功耗(虽说MCU本身功耗就很小,但我们要不断的把东西给做好,不断地优化,才能做出更好的东西)。
进度条显示这里我用的是OLED屏幕显示,用到画点、画线函数。为了进度条的滚动很流畅,我用了个小算法让它平滑的滚动。 注意, GRAM[][]这里画线显示和字符显示这里要同时用,如果画线用GRAM[][],字符不用,两个用在一起时字符显示会出现闪屏(怎么解决闪屏?我这里尝试过最好的方法效果是字符显示放在定时器中断用10MS处理显示,才基本不会闪屏,但是会有其他一些小bug,而且定时中断也不建议用显示函数)
int main(void)
{
int n = 2, flag = 0, a = 0, c = 20, d = 0;
Delay_Init(72);
Usart1_Init(115200);
W25Q64_Init();
ADC1_Init();
OLED_Init();
PWM_Init(72, 1000);
printf("串口调试成功\r\n");
picture.next_state = 1;//赋初始值
while (1)
{
ADC1_Fliter();
if (ADC_DMA_LVBO[2] > 3500) picture.flag = 1; //1挡