// 定义10个LED连接的引脚(使用数字引脚编号)
const int ledPins[] = {D0, D1, D2, D3, D4, D5, D6, D7, D8, D9};
const int numLeds = 10;
void setup() {
// 初始化串口
Serial.begin(115200);
Serial.println("STM32 跑马灯开始!");
// 将所有LED引脚配置为输出模式
for (int i = 0; i < numLeds; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW); // 初始化为熄灭状态
}
Serial.println("10个LED已初始化完成");
}
void loop() {
// 跑马灯效果1:从左到右依次点亮
Serial.println("--- 模式1: 单向跑马灯 ---");
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], HIGH); // 点亮当前LED
Serial.print("点亮LED ");
Serial.println(i + 1);
delay(200); // 延时200ms
digitalWrite(ledPins[i], LOW); // 熄灭当前LED
}
delay(500);
// 跑马灯效果2:从右到左依次点亮
Serial.println("--- 模式2: 反向跑马灯 ---");
for (int i = numLeds - 1; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH);
Serial.print("点亮LED ");
Serial.println(i + 1);
delay(200);
digitalWrite(ledPins[i], LOW);
}
delay(500);
// 跑马灯效果3:往返跑马灯
Serial.println("--- 模式3: 往返跑马灯 ---");
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], HIGH);
delay(150);
digitalWrite(ledPins[i], LOW);
}
for (int i = numLeds - 2; i > 0; i--) {
digitalWrite(ledPins[i], HIGH);
delay(150);
digitalWrite(ledPins[i], LOW);
}
delay(500);
// 跑马灯效果4:渐进式点亮(保持点亮)
Serial.println("--- 模式4: 渐进式点亮 ---");
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], HIGH);
delay(200);
}
delay(1000);
// 全部熄灭
Serial.println("全部熄灭...");
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], LOW);
delay(100);
}
delay(1000);
// 跑马灯效果5:双向对撞
Serial.println("--- 模式5: 双向对撞 ---");
for (int i = 0; i < numLeds / 2; i++) {
digitalWrite(ledPins[i], HIGH);
digitalWrite(ledPins[numLeds - 1 - i], HIGH);
delay(200);
digitalWrite(ledPins[i], LOW);
digitalWrite(ledPins[numLeds - 1 - i], LOW);
}
delay(1000);
// 跑马灯效果6:全部闪烁
Serial.println("--- 模式6: 全部闪烁 ---");
for (int j = 0; j < 3; j++) {
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], HIGH);
}
delay(300);
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], LOW);
}
delay(300);
}
delay(1000);
}