const int redPin = 9; //将红色LED连接到数字引脚9
const int yellowPin = 10;//将黄色LED连接到数字引脚10
const int greenPin = 11; //将绿色LED连接到数字引脚11
void setup() {
pinMode(redPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(greenPin, OUTPUT);
}
void loop() {
breathe(redPin); //调用breathe函数,让红色LED呼吸灯效果
breathe(yellowPin); //调用breathe函数,让黄色LED呼吸灯效果
breathe(greenPin); //调用breathe函数,让绿色LED呼吸灯效果
}
//自定义函数:实现LED呼吸灯效果
void breathe(int pin) {
for (int i = 0; i < 255; i++) { //从0递增到255,实现LED亮度逐渐增加
analogWrite(pin, i); //调用analogWrite函数,使LED产生PWM信号控制亮度
delay(5); //设定延时,控制LED亮度变化速度
}
for (int i = 255; i > 0; i--) { //从255递减到0,实现LED亮度逐渐减小
analogWrite(pin, i); //调用analogWrite函数,使LED产生PWM信号控制亮度
delay(5); //设定延时,控制LED亮度变化速度
}
}
解释一下代码过程:
定义常量redPin、yellowPin、greenPin,分别代表红色、黄色、绿色LED连接的引脚;
在setup函数中,将各个引脚设置为输出模式;
在loop函数中,分别调用自定义函数breathe(),让红色、黄色、绿色LED呈现呼吸灯效果;
自定义函数breathe()接收一个int类型的参数pin,代表传入的LED引脚;
在函数内部,使用for循环实现LED亮度从0递增到255、再从255递减到0的效果,并调用analogWrite()函数实现PWM调光;
循环执行loop函数,可以实现对呼吸灯效果的循环切换。