Câu lệnh if else Arduino – Chi tiết cách dùng và ví dụ minh họa

if else là câu lệnh phổ biến thường dùng khi lập trình trên Arduino. Chúng ta có thể xây dựng các ứng dụng từ cơ bản đến phức tạp dựa trên câu lệnh này. Trong bài viết này, mình sẽ giải thích chi tiết về if else, cách dùng và đưa ra một số code mẫu minh họa sử dụng cấu trúc này để bạn làm quen chúng nhé!

Cách hoạt động của if else trên Arduino

Arduino đa phần đều được lập trình trên Arduino IDE, với ngôn ngữ lập trình C là chính. Câu lệnh if else có vai trò kích hoạt một hoạt động nào đó, khi điều kiện đặt ra là đúng. 

Câu lệnh này cũng tương tự như điều kiện nếu… thì… mà chúng ta hay nói. Ví dụ, nếu điều kiện A xảy ra thì B sẽ làm công việc nhất định nào đó.

Khái niệm if else trong lập trình

Cách viết câu lệnh if else Arduino

Câu lệnh cơ bản

Cấu trúc của if else khá đơn giản, dưới đây mình viết một câu lệnh ngắn minh họa để màn hình Serial luôn in ra dòng chữ: “Nothing to worry about”:

void loop() {
   if (1 == 1) {
      Serial.println("Nothing to worry about!");
   } else {
      Serial.println("warning");
   }
}

Tại sao mình lại nói Serial luôn in ra dòng chữ đó? Tại vì dĩ nhiên thì 1 lúc nào cũng bằng 1 rồi (mình đặt điều kiện 1=1 này trong vòng lặp if – nếu). Tuy nhiên, nếu có lỗi gì xuất hiện và phép toán không đúng như trong điều kiện if đặt ra, hệ thống sẽ hiển thị dòng chữ cảnh báo “Warning”.

Kết hợp với điều kiện khác qua toán tử AND và OR

Ngoài ra, chúng ta có thể sử dụng câu lệnh if else kết hợp với nhiều điều kiện khác. Cụ thể, kiểm tra điều kiện nào đó có đúng hay không, nếu đúng thì mới kích hoạt tiếp câu lệnh if else.

Bạn có thể tạo mối quan hệ giữa nhiều điều kiện như vậy bằng các toán tử OR (hoặc) và AND (và). Cụ thể:

Thuật toán AND (&&)

Ví dụ, dưới đây là đoạn code ngắn kiểm tra xem biến Boolean có đặt thành giá trị true không. Nếu điều này xảy ra và đồng thời 1=1 (như trong câu lệnh if) thì mới kích hoạt hành động in dòng chữ “Nothing to worry about:

bool Variable = true;

void loop() {
   if (1 == 1 && Variable == true) {
      Serial.println("Nothing to worry about!");
   } else {
      Serial.println("Uh oh.");
   }
}

Thuật toán OR (||)

Chương trình cũng tương tự như trên, chỉ là bạn thay đổi && thành || như bên dưới. Lúc này, chỉ cần 1 trong 2 điều kiện thỏa mãn (biến có giá trị true hoặc 1=1), thì hành động in dòng chữ “nothing to worry about” sẽ xảy ra.

bool Variable = true;

void loop() {
   if (1 == 1 || Variable == true) {
      Serial.println("Nothing to worry about!");
   } else {
      Serial.println("Uh oh.");
   }
}

Câu lệnh if else nhiều điều kiện

Và phần cuối cùng mà IoTZone giới thiệu đến bạn là câu lệnh có nhiều điều kiện. Bạn có thể hiểu như thế này, câu lệnh bình thường chỉ có 1 vế là nếu… thì… Nhưng câu lệnh nhiều điều kiện sẽ có nhiều vế hơn, ví dụ như nếu…thì …. nếu không thì….

Hiểu nôm na nghĩa là chúng ta đặt thêm một điều kiện trong câu lệnh if else. Dưới đây là một ví dụ minh họa:

bool Variable = true;

void loop() {
   if (1 == 1) {
      Serial.println("Nothing to worry about!");
   } else if (Variable == true) {
      Serial.println("Uh oh.");
   }
}

Cụ thể, nếu 1=1 thì sẽ in ra dòng chữ “Nothing to worry about”. Nếu điều kiện 1=1 không xảy ra, thì hệ thống sẽ in ra dòng chữ “Uh oh” chỉ khi biến bool có giá trị true.

Ví dụ về câu lệnh if else

Dưới đây mình có viết sẵn một chương trình đơn giản: nếu a chia hết cho 2 thì in ra dòng chữ “a là số chẵn”, bạn tham khảo nhé:

#include <stdio.h>
 
int main(){
   int a;
   printf(“Nhap a = “); scanf(“%d”, &a);
 
   if (a % 2 == 0) // a chia hết cho 2
   {
       printf(“%d la so chan”, a);
   }
   printf(“\nXong!”);
}

Sau khi chạy đoạn code trên, bạn sẽ nhận được kết quả như sau:

Nhap a = 2                                                                            
2 la so chan                                                                          
Xong! 

Bây giờ mình sẽ nâng cấp chương trình này với câu lệnh if else nhiều điều kiện nhé, cụ thể:

  • Nếu a chia hết cho 2 => Hiển thị a là số chẵn
  • Nếu không => Hiển thị a là số lẻ

Đoạn code sẽ như sau:

#include <stdio.h>
 
int main(){
   int a;
   printf(“Nhap a = “); scanf(“%d”, &a);
 
   if (a % 2 == 0) // a chia hết cho 2
   {
       printf(“%d la so chan”, a);
   }else{
       printf(« %d la so le », a) ;
   }
}

Sau khi chạy code, chúng ta có kết quả như sau:

Nhap a = 1                                                                            
1 la so le 

Bây giờ, hãy thử nâng cao hơn một chút với câu lệnh if else arduino nhé! Cụ thể, mình sẽ cho thêm 1 điều kiện nữa:

  • Nhập 2 giá trị là a và b vào hệ thống
  • Nếu số a lớn hơn b => Hiển thị dòng chữ a > b
  • Nếu số a bằng số b => Hiển thị dòng chữ a =b
  • Nếu số a nhỏ hơn b => Hiển thị dòng chữ a < b

Như bạn thấy, mình có 3 điều kiện liên tiếp, chứ không phải 2 điều kiện như trên nữa. Chương trình lúc này sẽ như sau:

#include <stdio.h>
 
int main(){
   int a, b;
   printf("Nhap a = "); scanf("%d", &a);
   printf("Nhap b = "); scanf("%d", &b);
 
 
   // a, b 
   if(a > b){
       printf("%d lon hon %d", a, b);
   }else if(a == b){
       printf("%d bang %d", a, b);
   }else{
       printf("%d nho hon %d", a, b);
   }
}

Sau khi chạy xong, chúng ta có kết quả là:

Nhap a = 7                                                                            
Nhap b = 5                                                                            
3 lon hon 6 

Đây là ví dụ cơ bản, nếu bạn muốn viết câu lệnh if else có nhiều điều kiện hơn, bạn cứ làm tương tự như vậy là được. Cấu trúc chung sẽ như sau:

if (test expression1) 
{
  // statement(1)
}
else if(test expression2) 
{
  // statement(2)
}
else if (test expression3) 
{
  // statement(3)
}
…
else 
{
  // statement(n)
}

Lựa chọn thay thế của câu lệnh if else

Không chỉ dùng trong Arduino, câu lệnh if else cũng xuất hiện phổ biến ở hầu hết các ngôn ngữ lập trình hiện đại ngày nay, từ Scratch, Python,… Chúng rất dễ sử dụng và thường được gọi tên khá nhiều trong các chương trình.

Tuy nhiên, câu lệnh if else cũng không phải là vạn năng, và chúng cũng không phải là lựa chọn tốt nhất cho mọi trường hợp. Nếu như bạn muốn kiểm tra giá trị của một biến nào đó và kích hoạt điều kiện tương ứng, bạn có thể sử dụng lệnh switch…case xem thử nhé, chúng có thể mang lại hiệu quả cao hơn trong trường hợp này đó!

Cấu trúc của switch case sẽ như sau:

int Variable = 1;

void loop() {
    switch (Variable) {
      case 1:
        Serial.println("It's One!");
        break;

      case 2:
        Serial.println("It's Two!");
        break;

      case 3:
        Serial.println("It's Three!");
        break;

      default:
        Serial.println("It's a number!");
        break;
    }
}

Như trong chương trình trên, switch sẽ kiểm tra giá trị của một số nguyên. Giá trị này có thể là 1, 2 hoặc 3 mà mình không biết được. Nhưng ngoài ra thì cũng sẽ có trường hợp mặc định nếu giá trị không phải là 1, 2 hoặc 3 – Tương tự phần else trong câu lệnh if else.

>> Xem thêm: Cách bắt đầu với ESP32 cho người mới & 10 dự án ESP32 cơ bản

Lời kết

Trên đây, mình đã giải thích chi tiết về câu lệnh if else, cách hoạt động cũng như một số ví dụ minh họa đơn giản. Câu lệnh điều kiện này chỉ là một trong những bước đầu tiên khi bạn tiếp cận với lập trình Arduino nói chung và các ngôn ngữ lập trình khác nói riêng.

Hãy theo dõi blog tại IoTZone để theo dõi những bài viết kỹ thuật khác để nâng cao kỹ năng lập trình nhé!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *