Giống như if, switch / case cũng là một dạng lệnh nếu thì, nhưng nó được thiết kế chuyên biệt để bạn xử ý giá trị trên một biến chuyên biệt.
Ví dụ, bạn có một biến là action sẽ nhận trị từ những module khác qua serial. Nhưng action sẽ nằm trong một các giá trị nào đó thì lúc này bạn hãy sử dụng switch / case
switch (var) {
case label1:
// statements
break;
case label2:
// statements
break;
default:
// statements
break;
}
Giờ ta đi vào ví dụ nhé. Lại đèn sáng nhấp nháy cho dễ đọc code. Bài 1: dùng một nút nhấn, điều khiển 4 đèn led. Mỗi khi nhấn, thì một đèn sáng.
int ledPIN1 = 8;
int ledPIN2 = 9;
int ledPIN3 = 10;
int ledPIN4 = 11;
int buttonPIN = 2;
int beginStatusButton = 1;
int currentStatusButton;
int dem;
void setup() {
Serial.begin(9600);
pinMode(ledPIN1, OUTPUT);
pinMode(ledPIN2, OUTPUT);
pinMode(ledPIN3, OUTPUT);
pinMode(ledPIN4, OUTPUT);
pinMode(buttonPIN, INPUT_PULLUP);
}
void loop() {
currentStatusButton = digitalRead(buttonPIN);
if ( currentStatusButton != beginStatusButton )
{
if (currentStatusButton == 0)
{
dem+=1;
}
beginStatusButton = currentStatusButton;
}
Serial.println(dem);
// Xác định các trường hợp nút nhấn.
// Chỗ này có thể viết bằng IF.
switch (dem)
{
case 0 :
digitalWrite(ledPIN1, HIGH);
digitalWrite(ledPIN2, HIGH);
digitalWrite(ledPIN3, HIGH);
digitalWrite(ledPIN4, HIGH);
break;
case 1 :
digitalWrite(ledPIN1, LOW);
digitalWrite(ledPIN2, HIGH);
digitalWrite(ledPIN3, HIGH);
digitalWrite(ledPIN4, HIGH);
break;
case 2 :
digitalWrite(ledPIN2, LOW);
digitalWrite(ledPIN1, HIGH);
digitalWrite(ledPIN3, HIGH);
digitalWrite(ledPIN4, HIGH);
break;
case 3 :
digitalWrite(ledPIN3, LOW);
digitalWrite(ledPIN1, HIGH);
digitalWrite(ledPIN2, HIGH);
digitalWrite(ledPIN4, HIGH);
break;
case 4 :
digitalWrite(ledPIN4, LOW);
digitalWrite(ledPIN1, HIGH);
digitalWrite(ledPIN2, HIGH);
digitalWrite(ledPIN3, HIGH);
break;
case 5 :
dem = 0;
break;
default:
break;
}
}
Bài này thì cơ bản rồi, ta chỉ có cái mới là có sự xuất hiện của switch và case.
- switch (dem): tức là xét biến đếm (dem)
- case 1: tức là so sánh biến dem có bằng 1 hay không. Nếu bằng 1 thì thực hiện lệnh dưới trong case,
nếu sai thì thoát ra break chuyển sang case 2.
nếu sai thì thoát ra break chuyển sang case 2.
0 nhận xét:
Đăng nhận xét