iT邦幫忙

0

如何用Arduino 寫有關交叉跑馬燈的程式

  • 分享至 

  • xImage

使用arduino寫程式 .交叉跑馬燈。
讓排成一直線的7顆LED,從兩端開始發亮並交叉流動,並使用可變電阻控制LED動作流動的速度

請問要怎麼寫
以及電路要怎麼接
謝謝~~~~~

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2024-04-22 22:30:17

替你問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;
  }
}

電路

  1. 將 7 顆 LED 連接到 Arduino 的數位引腳 2 到 8。
  2. 將可變電阻連接到 Arduino 的數位引腳 9。
  3. 將所有 LED 的負極連接到 Arduino 的 GND 引腳。
  4. 將可變電阻的另一端連接到 Arduino 的 5V 引腳。

交叉跑馬燈電路圖: [已移除無效網址]

解釋

  • 程式碼首先定義了 LED 連接的腳位、LED 的狀態、LED 流動方向、LED 流動速度和可變電阻連接的腳位。
  • setup() 函數中,程式碼將 LED 和可變電阻的腳位設定為輸出和輸入。
  • loop() 函數中,程式碼首先讀取可變電阻的值並將其映射到 LED 流動速度。
  • 然後,程式碼根據 LED 流動方向更新 LED 的狀態。
  • 接下來,程式碼將 LED 的狀態輸出到 LED。
  • 最後,程式碼延遲 LED 流動速度並根據 LED 的狀態更新 LED 流動方向。

注意事項

  • 確保 LED 和可變電阻的連接正確。
  • 調整可變電阻的值以控制 LED 流動速度。
  • 您可以修改程式碼以調整 LED 流動方向和其他效果。

我要發表回答

立即登入回答