上一個ChatGPT+TinkerCAD+計時器,總覺得我是不是命令下得不夠好。所以我修正了一些命令。
用i2c的LCD當輸出畫面。只有一個按紐。當我按一下按紐,會開始記時,並顯示在LCD上。當再按一下開關,則計時會停止。請用millis()來計時。用arduino寫。
想不到這一次的實驗,一試就成功。
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// I2C LCD 的地址
const int LCD_ADDRESS = 0x27;
// 定義按鈕腳位
const int BUTTON_PIN = 2;
// 定義計時器變量
unsigned long timerStart = 0;
unsigned long timerEnd = 0;
// 創建一個 LCD 對象
LiquidCrystal_I2C lcd(LCD_ADDRESS, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void setup() {
// 初始化按鈕腳位
pinMode(BUTTON_PIN, INPUT_PULLUP);
// 初始化 LCD
lcd.begin(16, 2);
}
void loop() {
// 檢查按鈕是否被按下
if (digitalRead(BUTTON_PIN) == LOW) {
// 如果計時器正在運行,則停止計時器
if (timerStart > 0) {
timerEnd = millis();
timerStart = 0;
} else {
// 否則,啟動計時器
timerStart = millis();
}
}
// 如果計時器正在運行,則計算運行時間並顯示
if (timerStart > 0) {
unsigned long elapsed = millis() - timerStart;
// 計算小時
int hours = elapsed / 3600000;
elapsed = elapsed % 3600000;
// 計算分鐘
int minutes = elapsed / 60000;
elapsed = elapsed % 60000;
// 計算秒
int seconds = elapsed / 1000;
// 將時間格式化為 hh:mm:ss
char timeStr[9];
sprintf(timeStr, "%02d:%02d:%02d", hours, minutes, seconds);
// 在 LCD 上顯示時間
lcd.setCursor(0, 0);
lcd.print(timeStr);
}
}
丟到TinkerCAD後,發現對按鈕電位定義不同。更改一下電路,還有LCD的設置,就可以直接執行。
不過,可不可以請chatgpt告訴我電路該怎麼接呢?於是,我問了他這電路該怎麼接呢?
ChatGPT盡責的回答了:
要使用 I2C LCD 在 Arduino 上進行顯示,您需要連接 LCD 模塊和 Arduino 板之間的 SDA 和 SCL 腳位。
在 Arduino Uno 上,SDA 腳位位於 A4,SCL 腳位位於 A5。因此,您需要在 Arduino 板的 A4 和 A5 腳位以及 LCD 模塊的 SDA 和 SCL 腳位之間連接線。
您還需要連接 LCD 模塊的 VCC 和 GND 腳位到 Arduino 板的 5V 和 GND 腳位。
最後,您需要連接按鈕的一端到 Arduino 板的數字腳位,另一端到 GND 腳位。
總而言之,您的電路應該看起來像這樣:
- Arduino 板的 5V 腳位連接到 LCD 模塊的 VCC 腳位
- Arduino 板的 GND 腳位連接到 LCD 模塊的 GND 腳位
- Arduino 板的 A4 腳位連接到 LCD 模塊的 SDA 腳位
- Arduino 板的 A5 腳位連接到 LCD 模塊的 SCL 腳位
- 按鈕的一端連接到 Arduino 板的數字腳位
- 按鈕的另一端連接到 Arduino 板的 GND 腳位
希望這些資訊能夠幫助您。如果您還有任何其他疑問,請隨時告訴我。
可以看一下我的執行畫面裡的電路,跟他說的可以說是一模一樣啊。
哈哈哈哈~~~ 強大啊~~
這跟本交作業神器了~