#include <TimerOne.h>
const int buttonPin = 2; // Nút nhấn nối với pin D2
const int ledPin = 13; // Đèn LED nối với pin D13
volatile bool ledState = LOW; // Trạng thái của LED
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // Thiết lập nút nhấn với pull-up nội bộ
pinMode(ledPin, OUTPUT); // Thiết lập LED là đầu ra
attachInterrupt(digitalPinToInterrupt(buttonPin), buttonPressed, FALLING); // Ngắt khi nút nhấn được nhấn
Timer1.initialize(1000000); // Khởi tạo timer 1s (1000000us)
Timer1.attachInterrupt(timerCallback); // Gắn hàm callback cho timer
Timer1.stop(); // Dừng timer ban đầu
}
void loop() {
// Không cần làm gì trong loop
}
void buttonPressed() {
ledState = HIGH; // Bật LED
digitalWrite(ledPin, ledState);
Timer1.stop(); // Dừng timer nếu đang chạy
Timer1.restart(); // Khởi động lại timer từ đầu
}
void timerCallback() {
ledState = LOW; // Tắt LED
digitalWrite(ledPin, ledState);
Timer1.stop(); // Dừng timer sau khi hoàn thành oneshot
}