// 定义时间记录数组(用于20个LED的闪烁计时) /
// Array für Zeitstempel von 20 LEDs definieren
unsigned long t[20];
void setup() {
// 初始化板载LED(引脚13) / Board-LED (Pin 13) initialisieren
pinMode(13, OUTPUT);
// 初始化所有LED引脚并记录初始时间 /
// Alle LED-Pins initialisieren und Startzeit speichern
for(int ledid = 0; ledid < 20; ledid++) {
pinMode(ledid, OUTPUT); // 设置引脚为输出模式 / Pin als Ausgang setzen
t[ledid] = millis(); // 记录当前时间戳 / Zeitstempel speichern
}
}
// LED闪烁控制函数 / LED-Blinkfunktion
// 参数:ledid - LED编号 (0-19)
// ledhz - 闪烁周期(毫秒) / Blinkperiode (ms)
void ledblink(int ledid, int ledhz) {
// 检查是否到达闪烁时间点 / Prüfen ob Blinkzeitpunkt erreicht
if (millis() - t[ledid] >= ledhz) {
// 切换LED状态 / LED-Zustand umschalten
digitalWrite(ledid, !digitalRead(ledid));
// 更新最后切换时间 / Letzten Umschaltzeitpunkt aktualisieren
t[ledid] = millis();
}
}
void loop() {
// 循环控制所有20个LED的随机闪烁 /
// Schleife zur Steuerung von 20 LEDs mit zufälligen Blinkfrequenzen
for(int ledid = 0; ledid < 20; ledid++) {
// 生成随机闪烁周期(范围:ledid 到 2000*ledid 毫秒) /
// Zufällige Blinkperiode generieren (Bereich: ledid bis 2000*ledid ms)
int blinkInterval = random(ledid, 2000 * ledid);
// 调用闪烁控制函数 / Blinkfunktion aufrufen
ledblink(ledid, blinkInterval);
}
}