就像它的名字一样,呼吸灯的光效就是是缓慢变量然后缓慢变暗。这个过程的要点就是过渡要平滑,并且最亮的时候不要突然灭了,或者最暗的时候不要突然发生闪光。
我们前面写的那个1024
级精度的PWM
调光函数正好可以做这个事。所以,我们在它基础上再构造一个函数,用于按呼吸的规律控制pwm_led
函数的输入量。这个breath
函数如下
void breath()
{
for(i=0;i<1024;i++)
{
pwm_led(i);
}
delay(500);
for(i=1023;i>=0;i--)
{
pwm_led(i);
}
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
然后,依然是要写个主函数,能让这个呼吸函数跑起来。
int i;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
breath();
}
void pwm_led(int k)
{
if(k<0)
k=0;
if(k>1023)
k=1023;
digitalWrite(LED_BUILTIN, LOW);
delayMicroseconds(1023-k);
digitalWrite(LED_BUILTIN, HIGH);
delayMicroseconds(k);
}
void breath()
{
for(i=0;i<1024;i++)
{
pwm_led(i);
}
delay(500);
for(i=1023;i>=0;i--)
{
pwm_led(i);
}
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
读完我的这几篇帖子,小伙伴们应该收益颇丰。 对于怎么写函数,大伙儿模仿我这几篇帖子就好,但也别死记硬背,要留其神,遗其形。 千万不要拘泥于代码格式、变量类型和变量名字,学会灵活运用,融会贯通。
就像它的名字一样,呼吸灯的光效就是是缓慢变量然后缓慢变暗。这个过程的要点就是过渡要平滑,并且最亮的时候不要突然灭了,或者最暗的时候不要突然发生闪光。
我们前面写的那个1024
级精度的PWM
调光函数正好可以做这个事。所以,我们在它基础上再构造一个函数,用于按呼吸的规律控制pwm_led
函数的输入量。这个breath
函数如下
void breath()
{
for(i=0;i<1024;i++)
{
pwm_led(i);
}
delay(500);
for(i=1023;i>=0;i--)
{
pwm_led(i);
}
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
然后,依然是要写个主函数,能让这个呼吸函数跑起来。
int i;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
breath();
}
void pwm_led(int k)
{
if(k<0)
k=0;
if(k>1023)
k=1023;
digitalWrite(LED_BUILTIN, LOW);
delayMicroseconds(1023-k);
digitalWrite(LED_BUILTIN, HIGH);
delayMicroseconds(k);
}
void breath()
{
for(i=0;i<1024;i++)
{
pwm_led(i);
}
delay(500);
for(i=1023;i>=0;i--)
{
pwm_led(i);
}
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
读完我的这几篇帖子,小伙伴们应该收益颇丰。 对于怎么写函数,大伙儿模仿我这几篇帖子就好,但也别死记硬背,要留其神,遗其形。 千万不要拘泥于代码格式、变量类型和变量名字,学会灵活运用,融会贯通。