如果只是简单地把灯点亮,然后关闭,其实接个开关就能实现,但是单片机的特点没体现出来。
我们稍微做一下改进,来个脉冲灯,然后每个脉冲的低电平和高电平的持续时间可控。
我们依然需要写一个函数,这次输入量要两个,都是int型,分别代表低电平延时和高电平延时。
控制脉冲高低电平延时的函数应该是如下这样的
void blink(int delay1, int delay2)
{
basic_led(false);
delay(delay1);
basic_led(true);
delay(delay2);
basic_led(false);
}
上面用到的basic_led函数请参考上一篇。
最后写个主程序,给上面那个函数输入量变量,然后烧到板子上测试一下。板子照片我依然不上了,灯的动态,照片显示不出来的。
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
blink(500,2000);
}
void basic_led(bool on)
{
if(on)
digitalWrite(LED_BUILTIN, HIGH);
else
digitalWrite(LED_BUILTIN, LOW);
}
void blink(int delay1, int delay2)
{
basic_led(false);
delay(delay1);
basic_led(true);
delay(delay2);
basic_led(false);
}
小伙伴们在学会了脉冲灯的控制以后,还可以再把脉冲速度加快,快到人眼反应不过来看不出闪烁,那么就可以调光了。
如果只是简单地把灯点亮,然后关闭,其实接个开关就能实现,但是单片机的特点没体现出来。
我们稍微做一下改进,来个脉冲灯,然后每个脉冲的低电平和高电平的持续时间可控。
我们依然需要写一个函数,这次输入量要两个,都是int型,分别代表低电平延时和高电平延时。
控制脉冲高低电平延时的函数应该是如下这样的
void blink(int delay1, int delay2)
{
basic_led(false);
delay(delay1);
basic_led(true);
delay(delay2);
basic_led(false);
}
上面用到的basic_led函数请参考上一篇。
最后写个主程序,给上面那个函数输入量变量,然后烧到板子上测试一下。板子照片我依然不上了,灯的动态,照片显示不出来的。
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
blink(500,2000);
}
void basic_led(bool on)
{
if(on)
digitalWrite(LED_BUILTIN, HIGH);
else
digitalWrite(LED_BUILTIN, LOW);
}
void blink(int delay1, int delay2)
{
basic_led(false);
delay(delay1);
basic_led(true);
delay(delay2);
basic_led(false);
}
小伙伴们在学会了脉冲灯的控制以后,还可以再把脉冲速度加快,快到人眼反应不过来看不出闪烁,那么就可以调光了。