You are on page 1of 3

Đoạn code cho ESP32 là một chương trình đơn giản để điều khiển LED bằng nút

bấm. Ý nghĩa của các câu lệnh là như sau:

 #define Led 2 và #define Button 18: định nghĩa tên biến Led và Button với
giá trị là số chân GPIO của ESP32 mà LED và nút bấm được kết nối.
 int Button1;: khai báo một biến nguyên Button1 để lưu trạng thái của nút bấm
(0 hoặc 1).
 boolean i=0;: khai báo một biến boolean i với giá trị ban đầu là 0. Biến này sẽ
được dùng để chuyển đổi trạng thái của LED.
 void setup() {...}: hàm setup() được gọi một lần khi khởi động chương trình.
Nội dung của hàm setup() là:
o Serial.begin(115200);: khởi tạo cổng nối tiếp với tốc độ truyền dữ liệu
là 115200 baud. Cổng nối tiếp được dùng để gửi và nhận dữ liệu giữa
ESP32 và máy tính hoặc thiết bị khác.
o pinMode(Led, OUTPUT);: thiết lập chân GPIO Led (số 2) là đầu ra
(OUTPUT).
o pinMode(Button, INPUT);: thiết lập chân GPIO Button (số 18) là đầu vào
(INPUT).
o delay(400);: tạo một độ trễ 400 mili giây. Hàm delay() được dùng để
ngừng thực hiện chương trình trong một khoảng thời gian nhất định.
Để đảm cho ESP32 đã hoàn thành các cài đặt ban đầu trước khi chạy tiếp
các câu lệnh khác.
 void loop() {...}: hàm loop() được gọi liên tục sau khi hàm setup() kết thúc.
Nội dung của hàm loop() là:
o Button1= digitalRead(Button);: đọc giá trị số nhị phân (0 hoặc 1) từ
chân GPIO Button và gán cho biến Button1.
o Serial.println(Button1);: in giá trị của biến Button1 ra cổng nối tiếp,
kèm theo một ký tự xuống dòng.
o if (Button1==1){...}: kiểm tra nếu giá trị của biến Button1 bằng 1, tức
là nút bấm được nhấn, thì thực hiện các câu lệnh trong dấu ngoặc nhọn.
Nội dung của câu lệnh if là:
 i=!i;: phủ định giá trị của biến i và gán lại cho i. Nếu i ban đầu là
0, thì i sau khi phủ định sẽ là 1, và ngược lại. Câu lệnh này tạo ra
sự chuyển đổi trạng thái của biến i dựa vào nút bấm.
 delay(500);: tạo một độ trễ 500 mili giây. Câu lệnh này được
dùng để tránh hiện tượng rung cơ học của nút bấm, khiến cho
vòng lặp không được lặp lại quá nhanh và biến i không được gán
mới chính xác.
o if (i==1){...}: kiểm tra nếu giá trị của biến i bằng 1, thì thực hiện các
câu lệnh trong dấu ngoặc nhọn. Nội dung của câu lệnh if là:
 digitalWrite(Led,HIGH);: ghi giá trị số nhị phân cao (HIGH) vào
chân GPIO Led, khiến cho LED sáng.
o else {...}: ngược lại, nếu giá trị của biến i không bằng 1, thì thực hiện
các câu lệnh trong dấu ngoặc nhọn. Nội dung của câu lệnh else là:
 digitalWrite(Led,LOW);: ghi giá trị số nhị phân thấp (LOW) vào
chân GPIO Led, khiến cho LED tắt.
Giải thích chi tiết:

Đoạn code cho ESP32 có ý nghĩa như sau:

 Dòng đầu tiên #define Led 2 định nghĩa một hằng số có tên là Led và giá trị là 2.
Điều này có nghĩa là chân GPIO số 2 của ESP32 sẽ được sử dụng để điều khiển
đèn LED.

 Dòng thứ hai #define Button 18 định nghĩa một hằng số có tên là Button và giá trị
là 18. Điều này có nghĩa là chân GPIO số 18 của ESP32 sẽ được sử dụng để đọc
tín hiệu từ nút bấm.

 Dòng thứ ba int Button1; khai báo một biến kiểu số nguyên có tên là Button1.
Biến này sẽ lưu trữ giá trị đọc được từ nút bấm, có thể là 0 (nếu nút bấm không
được nhấn) hoặc 1 (nếu nút bấm được nhấn).

 Dòng thứ tư boolean i=0; khai báo một biến kiểu luận lý có tên là i và gán giá trị
ban đầu là 0. Biến này sẽ lưu trữ trạng thái của đèn LED, có thể là 0 (nếu đèn LED
tắt) hoặc 1 (nếu đèn LED sáng).

 Dòng thứ năm void setup() { bắt đầu một hàm có tên là setup. Hàm này sẽ được
chạy một lần duy nhất khi ESP32 khởi động hoặc được reset. Hàm này dùng để
thiết lập các cài đặt ban đầu cho ESP32.

 Dòng thứ sáu Serial.begin(115200); khởi tạo giao tiếp nối tiếp với tốc độ baud rate
là 115200. Điều này cho phép ESP32 gửi và nhận dữ liệu qua cổng USB với máy
tính hoặc các thiết bị khác.

 Dòng thứ bảy Serial.println(\"This is ESP32 setup code\"); gửi một chuỗi ký tự
"This is ESP32 setup code" kèm theo ký tự xuống dòng qua cổng nối tiếp. Điều
này có thể được xem trên màn hình Serial Monitor của Arduino IDE hoặc các
phần mềm khác.

 Dòng thứ tám pinMode(Led, OUTPUT); thiết lập chế độ hoạt động cho chân
GPIO số 2 (được gán cho hằng số Led) là OUTPUT, tức là chân này sẽ được sử
dụng để gửi tín hiệu ra ngoài, ví dụ như điều khiển đèn LED.

 Dòng thứ chín pinMode(Button, INPUT); thiết lập chế độ hoạt động cho chân
GPIO số 18 (được gán cho hằng số Button) là INPUT, tức là chân này sẽ được sử
dụng để nhận tín hiệu vào, ví dụ như đọc trạng thái của nút bấm.

 Dòng thứ mười delay(400); tạo một khoảng trễ 400 mili giây. Điều này dùng để
đảm bảo rằng ESP32 đã hoàn thành các cài đặt ban đầu trước khi chạy tiếp các câu
lệnh khác.

 Dòng thứ mười một } kết thúc hàm setup.


 Dòng thứ mười hai void loop() { bắt đầu một hàm có tên là loop. Hàm này sẽ được
chạy liên tục sau khi hàm setup kết thúc. Hàm này dùng để thực hiện các nhiệm vụ
chính của ứng dụng.

 Dòng thứ mười ba Button1= digitalRead(Button); đọc giá trị tín hiệu từ chân
GPIO số 18 (được gán cho hằng số Button) và gán cho biến Button1. Giá trị này
có thể là 0 hoặc 1 tùy thuộc vào nút bấm có được nhấn hay không.

 Dòng thứ mười bốn Serial.println(Button1); gửi giá trị của biến Button1 kèm theo
ký tự xuống dòng qua cổng nối tiếp. Điều này có thể được xem trên màn hình
Serial Monitor của Arduino IDE hoặc các phần mềm khác.

 Dòng thứ mười lăm if (Button1==1){ bắt đầu một câu lệnh điều kiện. Câu lệnh
này kiểm tra xem giá trị của biến Button1 có bằng 1 hay không. Nếu có, thì sẽ
thực hiện các câu lệnh trong khối lệnh tiếp theo. Nếu không, thì sẽ bỏ qua khối
lệnh đó.

 Dòng thứ mười sáu i=!i; đảo ngược giá trị của biến i. Nếu i là 0, thì sẽ gán i bằng
1. Nếu i là 1, thì sẽ gán i bằng 0. Điều này dùng để tạo chuyển đổi trạng thái của
đèn LED dựa vào nút bấm.

 Dòng thứ mười bảy delay(500); tạo một khoảng trễ 500 mili giây. Điều này dùng
để tạo độ trễ để vòng lặp không được lặp lại quá nhanh khiến cho biến i không
được gán mới chính xác.

 Dòng thứ mười tám } kết thúc khối lệnh điều kiện.

 Dòng thứ mười chín if (i==1){ bắt đầu một câu lệnh điều kiện khác. Câu lệnh này
kiểm tra xem giá trị của biến i có bằng 1 hay không. Nếu có, thì sẽ thực hiện các
câu lệnh trong khối lệnh tiếp theo. Nếu không, thì sẽ bỏ qua khối lệnh

You might also like