Menu
CoddyTech

Ghi nhớ chế độ

Thuộc phần Định thời không dùng delay trong hành trình Arduino của Coddy. Bài học 7 trên 18.

Một lần nhấn nút chỉ kéo dài một phần giây, nhưng việc nó khởi động có thể kéo dài lâu hơn nhiều. Để tiếp tục sau khi bạn thả nút, sketch phải nhớ nó đang làm gì. Một biến dùng cho việc đó được gọi là trạng thái hoặc chế độ:

int mode = 0;   // 0 = tắt, 1 = nhấp nháy

Chia loop() thành hai phần. Trước tiên, các đầu vào chỉ thay đổi chế độ. Sau đó, phần còn lại của vòng lặp thực hiện theo chế độ:

// 1. Đầu vào thay đổi mode
if (digitalRead(blinkButton) == LOW) {
  mode = 1;
}

// 2. mode quyết định điều gì xảy ra
if (mode == 1) {
  // Nhấp nháy bằng millis()
} else {
  digitalWrite(ledPin, LOW);
}

Mỗi số đại diện cho một việc mà sketch có thể thực hiện. Hãy viết ý nghĩa của mỗi số trong chú thích. Sketch có thể có nhiều chế độ tùy nhu cầu: 0, 1, 2, 3 và nhiều hơn nữa.

challenge icon

Thử thách

Dễ

Nút màu xanh lá nằm ở chân 2, còn nút màu đỏ nằm ở chân 3.

  • Nút màu xanh lá đặt mode thành 1, nút màu đỏ đặt thành 0
  • Khi mode là 1, đèn LED ở chân 13 nhấp nháy bằng millis(), bật trong 500 ms và tắt trong 500 ms
  • Khi mode là 0, đèn LED tắt

Nhấn Chạy, nhấn nút màu xanh lá rồi thả ra, sau đó nhấn nút màu đỏ. Tiếp theo, nhấn Kiểm tra.

Tự làm thử

const int ledPin = 13;
const int blinkButton = 2;   // xanh lá
const int offButton = 3;     // đỏ

int mode = 0;   // 0 = tắt, 1 = nhấp nháy

unsigned long previousMillis = 0;
int ledState = LOW;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(blinkButton, INPUT_PULLUP);
  pinMode(offButton, INPUT_PULLUP);
}

void loop() {
  // 1. các nút chỉ thay đổi mode

  // 2. sau đó thực hiện theo mode
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Định thời không dùng delay

Tự luyện tập: Playground Arduino