//流水式呼吸灯
//三个LED灯,依次呼吸点亮
//需要三个引脚,每个引脚的LED灯依次模拟输入(呼吸)
/*预处理 常量*/
//呼吸间隔时间
#define breathe_space 500
//需要三个可以PWM的引脚
#define pin1 3
#define pin2 6
#define pin3 11
//函数所需要的常量
#define dutycycle_space 5 //PWM占空比变化间隔
#define LED_breathe_speedtime 15 //LED渐变效果的快慢速度,以上两个值越小呼吸渐变约明显
/*函数原型*/
int pin_set_OUTPUT();//引脚激活函数
int breathe();//呼吸函数
/*主程序*/
void setup()
{
//激活三个引脚
pin_set_OUTPUT(pin1);
pin_set_OUTPUT(pin2);
pin_set_OUTPUT(pin3);
}
void loop()
{
//按照一定时间间隔,依次呼吸
breathe(pin1);//第一个灯
delay(breathe_space);//呼吸间隔
breathe(pin2);//第二个灯
delay(breathe_space);//呼吸间隔
breathe(pin3);//第三个灯
delay(breathe_space);
}
/*函数定义*/
//引脚激活函数
int pin_set_OUTPUT(int pin_wanted)//想要激活的引脚
{
pinMode(pin_wanted,HIGH);
return 0 ;
}
//呼吸函数
int breathe(int pin_wanted)//想要的引脚
{
/*
循环调节PWN
输入想要的引脚
循环输出模拟PWN,从0到255,以一定的间隔dutycycle_space
*/
int PWNnum = 0;//逐渐变亮
for(PWNnum = 0 ; PWNnum < 255 ; PWNnum = PWNnum + dutycycle_space)
{
analogWrite(pin_wanted,PWNnum);
delay(LED_breathe_speedtime);
}
/*
循环输出模拟PWN,从255到0,以一定的间隔dutycycle_space
*/
//逐渐变亮
for(PWNnum = 255 ;PWNnum > 0 ; PWNnum = PWNnum - dutycycle_space)
{
analogWrite(pin_wanted,PWNnum);
delay(LED_breathe_speedtime);
}
return 0 ;
}