You are on page 1of 2

Đây là một đoạn code Arduino để điều khiển đèn LED bằng nút nhấn.

Tôi sẽ giải
thích từng dòng code như sau:

 Dòng 1: const int ledPin = 13; khai báo một hằng số kiểu int có tên là ledPin
và gán giá trị là 13. Đây là chân kết nối với đèn LED.
 Dòng 2: const int buttonPin = A5; khai báo một hằng số kiểu int có tên là
buttonPin và gán giá trị là A5. Đây là chân kết nối với nút nhấn.
 Dòng 4: int ledState = LOW; khai báo một biến kiểu int có tên là ledState và
gán giá trị ban đầu là LOW. Đây là biến lưu trạng thái của đèn LED, LOW
nghĩa là tắt, HIGH nghĩa là sáng.
 Dòng 5: int buttonState; khai báo một biến kiểu int có tên là buttonState. Đây
là biến lưu trạng thái của nút nhấn, HIGH nghĩa là được nhấn, LOW nghĩa là
không được nhấn.
 Dòng 6: int lastButtonState = LOW; khai báo một biến kiểu int có tên là
lastButtonState và gán giá trị ban đầu là LOW. Đây là biến lưu trạng thái trước
đó của nút nhấn, để so sánh với trạng thái hiện tại.
 Dòng 7: unsigned long tgtranhnhieu = 0; khai báo một biến kiểu unsigned
long có tên là tgtranhnhieu và gán giá trị ban đầu là 0. Đây là biến lưu thời gian
chống nhiễu cho nút nhấn, để loại bỏ các tín hiệu sai do dao động điện áp.
 Dòng 8: unsigned long tgcho = 50; khai báo một hằng số kiểu unsigned long
có tên là tgcho và gán giá trị là 50. Đây là khoảng thời gian chờ để xác nhận
trạng thái của nút nhấn, tính bằng mili giây.
 Dòng 10: void setup() { bắt đầu hàm setup, hàm này chỉ chạy một lần khi
khởi động Arduino hoặc khi reset.
 Dòng 11: pinMode(ledPin, OUTPUT); thiết lập chân ledPin (13) là OUTPUT,
nghĩa là có thể xuất ra điện áp để điều khiển đèn LED.
 Dòng 12: pinMode(buttonPin, INPUT); thiết lập chân buttonPin (A5) là INPUT,
nghĩa là có thể đọc vào điện áp từ nút nhấn.
 Dòng 13: } kết thúc hàm setup.
 Dòng 15: void loop() { bắt đầu hàm loop, hàm này sẽ chạy liên tục sau khi
hàm setup kết thúc.
 Dòng 16: int reading = digitalRead(buttonPin); khai báo một biến kiểu int
có tên là reading và gán giá trị bằng kết quả của hàm digitalRead(buttonPin).
Hàm này sẽ đọc giá trị điện áp tại chân buttonPin (A5) và trả về HIGH hoặc
LOW.
 Dòng 19: if (reading != lastButtonState) { kiểm tra xem giá trị reading có
khác với giá trị lastButtonState hay không. Nếu có, nghĩa là có sự thay đổi
trạng thái của nút nhấn.
 Dòng 20: tgtranhnhieu = millis(); gán giá trị của biến tgtranhnhieu bằng kết
quả của hàm millis(). Hàm này sẽ trả về số mili giây đã trôi qua kể từ khi
Arduino khởi động. Đây là thời điểm bắt đầu chống nhiễu cho nút nhấn.
 Dòng 21: } kết thúc câu lệnh if.
 Dòng 23: if ((millis() - tgtranhnhieu) > tgcho) { kiểm tra xem khoảng
thời gian chờ đã vượt quá giá trị của biến tgcho hay chưa. Nếu có, nghĩa là đã
đủ thời gian để xác nhận trạng thái của nút nhấn.
 Dòng 24: if (reading != buttonState) { kiểm tra xem giá trị reading có khác
với giá trị buttonState hay không. Nếu có, nghĩa là có sự thay đổi trạng thái của
nút nhấn mà không phải do nhiễu.
 Dòng 25: buttonState = reading; gán giá trị của biến buttonState bằng giá trị
của biến reading. Đây là cập nhật trạng thái mới của nút nhấn.
 Dòng 27: if (buttonState == HIGH) { kiểm tra xem giá trị buttonState có bằng
HIGH hay không. Nếu có, nghĩa là nút nhấn được nhấn.
 Dòng 28: ledState = (ledState == LOW) ? HIGH : LOW; gán giá trị của biến
ledState bằng kết quả của một biểu thức điều kiện. Biểu thức này sẽ kiểm tra
xem giá trị ledState có bằng LOW hay không. Nếu có, sẽ trả về HIGH, ngược
lại sẽ trả về LOW. Đây là cách để đổi trạng thái của đèn LED từ tắt sang sáng
hoặc ngược lại.
 Dòng 29: digitalWrite(ledPin, ledState); gọi hàm digitalWrite(ledPin,
ledState) để xuất ra điện áp tương ứng với giá trị ledState tại chân ledPin (13).
Điều này sẽ làm cho đèn LED sáng hoặc tắt theo giá trị ledState.
 Dòng 30: } kết thúc câu lệnh if.
 Dòng 31: } kết thúc câu lệnh if.
 Dòng 32: } kết thúc câu lệnh if.
 Dòng 34: lastButtonState = reading; gán giá trị của biến lastButtonState
bằng giá trị của biến reading. Đây là cập nhật trạng thái trước đó của nút nhấn
để so sánh với lần đọc tiếp theo.
 Dòng 35: } kết thúc hàm loop.

Hy vọng bạn đã hiểu rõ hơn về đoạn code này. Nếu bạn có thắc mắc gì khác, hãy hỏi

tôi nhé. 😊

You might also like