Trải nghiệm học Lập trình ESP32 miễn phí

💡 Trong bài học này

🎯 Mục tiêu

Sau bài học này, bạn sẽ:

  • Hiểu cấu trúc của một chương trình Arduino.
  • Biết chức năng của hai hàm setup() và loop().
  • Biết cách sử dụng Comment để ghi chú chương trình.
  • Hiểu khái niệm biến và một số kiểu dữ liệu cơ bản.
  • Biết quy tắc đặt tên biến.
  • Hiểu một số toán tử thường dùng.
  • Biết sử dụng câu lệnh điều kiện if...else.
  • Hiển thị dữ liệu bằng Serial Monitor.
Cấu trúc chương trình Arduino

📖 Nội dung bài học

1. Hàm setup()

Hàm setup() được gọi một lần duy nhất khi ESP32 khởi động hoặc reset.

Hàm này thường được dùng để:

  • Khởi tạo Serial.
  • Cấu hình chân GPIO.
  • Khởi tạo WiFi.
  • Khởi tạo các thư viện.

Ví dụ

void setup()
{
    Serial.begin(115200);
}

2. Hàm loop()

Sau khi hàm setup() kết thúc, chương trình sẽ liên tục thực hiện hàm loop() cho đến khi ESP32 được tắt nguồn hoặc reset.

Hàm này thường được dùng để:

  • Điều khiển LED.
  • Đọc nút nhấn.
  • Đọc cảm biến.
  • Gửi và nhận dữ liệu.
  • Thực hiện các công việc lặp đi lặp lại.

Ví dụ

void loop()
{
    Serial.println("ESP32");
}

3. Comment (Chú thích)

Comment dùng để ghi chú hoặc giải thích chương trình. Các dòng Comment chỉ dành cho người đọc và không được ESP32 thực thi.

Comment một dòng

// Đây là comment

Comment nhiều dòng

/*
Đây là
comment nhiều dòng
*/

Nên sử dụng Comment để giải thích những đoạn code quan trọng hoặc chia chương trình thành các phần rõ ràng.


4. Biến và kiểu dữ liệu

Biến dùng để lưu trữ dữ liệu trong chương trình.

Cú pháp

kieu_du_lieu ten_bien = gia_tri;

Ví dụ

int age = 20;
float temperature = 28.5;
bool ledState = true;
String name = "ESP32";

Một số kiểu dữ liệu thường dùng:

Kiểu dữ liệuÝ nghĩaKhoảng giá trị
intSố nguyên-2,147,483,648 → 2,147,483,647
floatSố thựcKhoảng ±3.4 × 10³⁸
boolĐúng hoặc Saifalse hoặc true
charMột ký tự0 → 255 (mã ASCII)
StringChuỗi ký tựĐộ dài thay đổi

5. Quy tắc đặt tên biến

Khi đặt tên biến cần tuân thủ các quy tắc sau:

  • Không bắt đầu bằng số.
  • Không chứa khoảng trắng.
  • Không sử dụng từ khóa của ngôn ngữ C/C++.
  • Đặt tên ngắn gọn và thể hiện đúng ý nghĩa.

Ví dụ đúng:

int ledPin;
float temperature;
String wifiName;

Ví dụ sai:

int 123abc;
int led pin;
int int;

6. Toán tử

Toán tử dùng để tính toán hoặc so sánh dữ liệu.

Ví dụ:

int a = 10;
int b = 5;

int c = a + b;

Một số toán tử thường dùng:

Toán tửÝ nghĩa
=Gán giá trị
+= -=Gán kết hợp
+ - * / %Phép toán (cộng, trừ, nhân, chia, chia lấy phần dư)
++ --Tăng hoặc giảm 1
== !=So sánh (bằng, khác)
> < >= <=So sánh (lớn, bé, lớn hơn bằng, bé hơn bằng)
&& || !Toán tử logic (và, hoặc, phủ định)

7. Câu lệnh if...else

Câu lệnh if...else giúp chương trình đưa ra quyết định khi một điều kiện đúng hoặc sai.

Cú pháp

if (dieu_kien)
{

}
else
{

}

Ví dụ

int age = 18;

if (age >= 18)
{
    Serial.println("Ban da du 18 tuoi");
}
else
{
    Serial.println("Ban chua du 18 tuoi");
}

8. Serial Monitor

Serial Monitor giúp hiển thị thông tin từ ESP32 lên máy tính để theo dõi và kiểm tra chương trình.

Khởi tạo Serial

Serial.begin(115200);

Hiển thị dữ liệu

Serial.print("Hello");
Serial.println("ESP32");

Trong đó:

  • Serial.print() hiển thị dữ liệu trên cùng một dòng.
  • Serial.println() hiển thị dữ liệu và tự động xuống dòng.

💻 Source Code

// Khai báo biến
int age = 20;

void setup()
{
    // Khởi tạo Serial
    Serial.begin(115200);

    // Kiểm tra tuổi
    if (age >= 18)
    {
        Serial.println("Ban da du 18 tuoi");
    }
    else
    {
        Serial.println("Ban chua du 18 tuoi");
    }
}

void loop()
{

}
C++

🔍 Giải thích chương trình

  • Khai báo biến age để lưu giá trị tuổi.
  • Trong setup(), khởi tạo Serial với tốc độ 115200 bps.
  • Sử dụng câu lệnh if...else để kiểm tra giá trị của biến age.
  • Nếu age lớn hơn hoặc bằng 18, chương trình hiển thị “Ban da du 18 tuoi”.
  • Ngược lại, chương trình hiển thị “Ban chua du 18 tuoi”.
  • Hàm loop() hiện chưa có nội dung và sẽ được sử dụng trong các bài học tiếp theo.

💡 Lưu ý

  • Mọi chương trình Arduino đều phải có hai hàm setup() và loop().
  • Mỗi câu lệnh thường kết thúc bằng dấu ;.
  • Phân biệt = (gán giá trị) và == (so sánh).
  • Nên sử dụng Comment để chương trình dễ đọc và dễ bảo trì.
  • Đặt tên biến ngắn gọn, đúng ý nghĩa.

⚠ Lỗi thường gặp

  • Quên dấu ;.
  • Nhầm = với ==.
  • Quên dấu {}.
  • Đặt tên biến không đúng quy tắc.
  • Quên Serial.begin() trước khi sử dụng Serial.print() hoặc Serial.println().

📝 Bài tập

Bài 1: Khai báo:

  • Một biến kiểu int lưu tuổi của bạn.
  • Một biến kiểu String lưu họ và tên.

Bài 2: Sử dụng Serial.println() để hiển thị họ tên và tuổi lên Serial Monitor.

Bài 3: Viết câu lệnh if...else để kiểm tra một số có lớn hơn 10 hay không.

Bài 4: Thêm Comment để giải thích chức năng của từng phần trong chương trình.


📥 Tài liệu tải về

  • Slide bài giảng.