台大生物機電工程系(生機系)郭教授 Arduino 的第二堂課匆匆解釋了下面這問題一下就過了 !! 連程式碼都沒有甚是奇怪?想想用 AI 有一段時間了現在試試幫我寫一段程式看看 !
撰寫一個 Arduino 程式 他能執行以下功能
Build a circuit that composes of an LED and a button
• Blink the LED at
• 2Hz when the button is pressed
• ½ Hz when the button is released
CGPT3.5 回復:
以下是一個簡單的Arduino程式,實現了按下按鈕時LED閃爍2Hz,釋放按鈕時LED閃爍0.5Hz的功能。在這個例子中,我們使用Digital Pin 2作為按鈕的輸入,Digital Pin 13作為LED的輸出。
const int buttonPin = 2; // 按鈕接線到Digital Pin 2
const int ledPin = 13; // LED接線到Digital Pin 13
int buttonState = 0; // 記錄按鈕的狀態
unsigned long previousMillis = 0; // 記錄上一次閃爍的時間
const long intervalOn = 500; // 按下按鈕時LED閃爍的時間間隔 (2Hz)
const long intervalOff = 2000; // 釋放按鈕時LED閃爍的時間間隔 (0.5Hz)
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
// 檢查按鈕是否被按下
if (buttonState == HIGH) {
// 按下按鈕時LED閃爍2Hz
blinkLED(2);
} else {
// 釋放按鈕時LED閃爍0.5Hz
blinkLED(0.5);
}
}
void blinkLED(float frequency) {
unsigned long currentMillis = millis();
// 計算閃爍的時間間隔
long interval = 1000 / (2 * frequency);
// 判斷是否過了閃爍的時間間隔
if (currentMillis - previousMillis >= interval) {
// 記錄當前時間
previousMillis = currentMillis;
// 切換LED狀態
if (digitalRead(ledPin) == HIGH) {
digitalWrite(ledPin, LOW);
} else {
digitalWrite(ledPin, HIGH);
}
}
}
這個程式中,我們使用了millis()函數來跟蹤時間,以便在指定的頻率下閃爍LED。按下按鈕時,閃爍頻率設置為2Hz,釋放按鈕時,閃爍頻率設置為0.5Hz。
Bard(實驗版)
// 定義 LED 和按鈕的接腳
const int ledPin = 13;
const int buttonPin = 2;
// 定義 LED 的閃爍頻率
const int blinkInterval = 1000 / 2; // 2Hz
const int halfBlinkInterval = 1000 / (2 * 2); // ½ Hz
// 初始化 LED 和按鈕
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
// 主回圈
void loop() {
// 讀取按鈕的狀態
int buttonState = digitalRead(buttonPin);
// 如果按鈕按下
if (buttonState == HIGH) {
// 以 2Hz 閃爍 LED
digitalWrite(ledPin, HIGH);
delay(blinkInterval);
digitalWrite(ledPin, LOW);
delay(blinkInterval);
} else {
// 如果按鈕釋放
// 以 ½ Hz 閃爍 LED
digitalWrite(ledPin, HIGH);
delay(halfBlinkInterval);
digitalWrite(ledPin, LOW);
delay(halfBlinkInterval);
}
}
請謹慎使用程式碼。了解詳情
此程式首先定義 LED 和按鈕的接腳。然後,它定義 LED 的閃爍頻率。在主回圈中,程式會讀取按鈕的狀態。如果按鈕按下,程式會以 2Hz 閃爍 LED。如果按鈕釋放,程式會以 ½ Hz 閃爍 LED。
您可以使用以下電路來實現此程式:
LED
|
|
| 10kΩ
|
|
GND
LED 的正極連接到 Arduino 板上的 13 接腳。LED 的負極連接到 Arduino 板上的 GND 接腳。按鈕的其中一端連接到 Arduino 板上的 2 接腳。按鈕的另一端連接到 Arduino 板上的 GND 接腳。
您可以將此程式修改為執行其他功能。例如,您可以修改程式以使 LED 閃爍不同的顏色。
Google AI Studio
const int ledPin = 13;
const int buttonPin = 2;
int buttonState = 0;
int ledState = 0;
unsigned long previousMillis = 0;
const long interval = 1000; // 1 second
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
unsigned long currentMillis = millis();
if (buttonState == HIGH) {
if (ledState == LOW) {
digitalWrite(ledPin, HIGH);
ledState = HIGH;
previousMillis = currentMillis;
} else if (ledState == HIGH && (currentMillis - previousMillis >= interval / 2)) {
digitalWrite(ledPin, LOW);
ledState = LOW;
previousMillis = currentMillis;
}
} else {
if (ledState == HIGH) {
digitalWrite(ledPin, HIGH);
ledState = HIGH;
previousMillis = currentMillis;
} else if (ledState == LOW && (currentMillis - previousMillis >= interval)) {
digitalWrite(ledPin, LOW);
ledState = LOW;
previousMillis = currentMillis;
}
}
}
```
這個程式使用了無符號整數變數 `previousMillis` 來儲存前一次按鈕狀態改變的時間。程式還使用了常數 `interval` 來定義 LED 閃爍的間隔。
當按鈕按下時,程式會以 2Hz 的頻率閃爍 LED。當按鈕釋放時,程式會以 ½ Hz 的頻率閃爍 LED。
您可以使用以下電路來實現此程式:
LED
|
|
| 10kΩ
|
|
GND
LED 的正極連接到 Arduino 板上的 13 接腳。LED 的負極連接到 Arduino 板上的 GND 接腳。按鈕的其中一端連接到 Arduino 板上的 2 接腳。按鈕的另一端連接到 Arduino 板上的 GND 接腳。
您可以將此程式修改為執行其他功能。例如,您可以修改程式以使 LED 閃爍不同的顏色。
沒有留言:
張貼留言