8个灯实现切换流水灯和呼吸灯的效果的C语言代码
时间: 2024-05-15 11:16:44 浏览: 198
以下是使用Arduino编写的实现切换流水灯和呼吸灯效果的C语言代码:
```
// 定义8个LED灯的引脚
int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9};
// 定义流水灯的亮度值
int brightness = 0;
// 定义流水灯的方向
bool direction = true;
void setup() {
// 初始化8个LED灯的引脚
for (int i = 0; i < 8; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
// 切换流水灯和呼吸灯效果
if (brightness == 0) {
// 亮度值为0时,切换到流水灯效果
for (int i = 0; i < 8; i++) {
digitalWrite(ledPins[i], LOW);
}
if (direction) {
// 从左往右
for (int i = 0; i < 8; i++) {
digitalWrite(ledPins[i], HIGH);
delay(100);
digitalWrite(ledPins[i], LOW);
}
} else {
// 从右往左
for (int i = 7; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH);
delay(100);
digitalWrite(ledPins[i], LOW);
}
}
// 改变方向
direction = !direction;
} else {
// 亮度值不为0时,切换到呼吸灯效果
for (int i = 0; i < 8; i++) {
analogWrite(ledPins[i], brightness);
}
brightness += direction ? 5 : -5;
if (brightness == 255 || brightness == 0) {
direction = !direction;
}
delay(50);
}
}
```
在该代码中,首先定义8个LED灯的引脚。然后,使用一个变量`brightness`来控制流水灯的亮度值,使用一个变量`direction`来控制流水灯的方向。在`setup()`函数中,初始化8个LED灯的引脚。在`loop()`函数中,判断当前是流水灯还是呼吸灯效果。如果`brightness`值为0,则切换到流水灯效果。在流水灯效果中,根据`direction`变量的值,从左往右或从右往左依次点亮8个LED灯。然后改变`direction`变量的值,以备下次切换方向。如果`brightness`值不为0,则切换到呼吸灯效果。在呼吸灯效果中,使用`analogWrite()`函数控制LED灯的亮度值,从而实现呼吸灯效果。同时,根据`direction`变量的值,逐渐增加或减少LED灯的亮度值,直到亮度值达到最大或最小值时,再改变`direction`变量的值,以备下次逆向操作。最后,使用`delay()`函数控制流水灯和呼吸灯效果的切换速度。
阅读全文