#include <Wire.h>
#include <LiquidCrystal_I2C_Hangul.h>
// 定義I2C地址,通常是0x27或0x3F,請根據您的LCD型號進行調整
#define I2C_ADDR 0x27
// 建立LiquidCrystal_I2C物件
LiquidCrystal_I2C_Hangul lcd(I2C_ADDR, 16, 2); // 16列,2行
const int buttonPin = 2; //計時按鈕
const int ledPin = 13; //LED燈
const int buzzerPin = 9; //蜂鳴器
boolean buttonState = 0; //按鈕的目前狀態,預設值為0表示沒按下
boolean lastButtonState = 0; //記錄上一次按鈕的狀態
unsigned long startTime; //開始時間
const unsigned long interval = 180000; //三分鐘
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
// 初始化LCD
lcd.init(); // 初始化LCD
lcd.backlight(); // 開啟背光
lcd.setCursor(0, 0);
lcd.print("Time: ");
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH && lastButtonState == LOW) {
startTime = millis();
}
if (buttonState == HIGH && (millis() - startTime >= interval)) {
digitalWrite(ledPin, HIGH);
tone(buzzerPin, 1000);
lcd.setCursor(6, 0);
lcd.print("3:00");
} else {
digitalWrite(ledPin, LOW);
noTone(buzzerPin);
lcd.setCursor(6, 0);
unsigned long elapsedTime = (millis() - startTime) / 1000;
int minutes = elapsedTime / 60;
int seconds = elapsedTime % 60;
lcd.print(minutes);
lcd.print(":");
if (seconds < 10) {
lcd.print("0");
}
lcd.print(seconds);
}
lastButtonState = buttonState;
}