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áyChia 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.
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
modethành 1, nút màu đỏ đặt thành 0 - Khi
modelà 1, đèn LED ở chân 13 nhấp nháy bằngmillis(), bật trong 500 ms và tắt trong 500 ms - Khi
modelà 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
}
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