替你問Google Gemini
## 程式碼
```c++
const int ledPin[7] = {2, 3, 4, 5, 6, 7, 8}; // 定義 LED 連接的腳位
int ledState[7] = {LOW, LOW, LOW, LOW, LOW, LOW, LOW}; // 定義 LED 的狀態
int ledDirection = 1; // 定義 LED 流動方向 (1: 由右往左, -1: 由左往右)
int speed = 500; // 定義 LED 流動速度 (ms)
int potPin = 9; // 定義可變電阻連接的腳位
void setup() {
for (int i = 0; i < 7; i++) {
pinMode(ledPin[i], OUTPUT); // 設定 LED 腳位為輸出
}
pinMode(potPin, INPUT); // 設定可變電阻腳位為輸入
}
void loop() {
int sensorValue = analogRead(potPin); // 讀取可變電阻的值
speed = map(sensorValue, 0, 1023, 100, 1000); // 將可變電阻的值映射到 LED 流動速度
for (int i = 0; i < 7; i++) {
if (ledDirection == 1) {
ledState[i] = i < ledDirection * i ? HIGH : LOW;
} else {
ledState[i] = i > -ledDirection * i ? HIGH : LOW;
}
}
for (int i = 0; i < 7; i++) {
digitalWrite(ledPin[i], ledState[i]);
}
delay(speed); // 延遲 LED 流動速度
if (ledDirection == 1 && ledState[6] == HIGH) {
ledDirection = -1;
} else if (ledDirection == -1 && ledState[0] == HIGH) {
ledDirection = 1;
}
}
交叉跑馬燈電路圖: [已移除無效網址]
setup()
函數中,程式碼將 LED 和可變電阻的腳位設定為輸出和輸入。loop()
函數中,程式碼首先讀取可變電阻的值並將其映射到 LED 流動速度。