Đếm ngược về 0
Thuộc phần Màn hình và cảm biến trong hành trình Arduino của Coddy. Bài học 4 trên 24.
Tương tự như trong bài quét servo, vòng lặp for có thể đếm ngược: bắt đầu từ số lớn, tiếp tục khi số đó lớn hơn hoặc bằng 0 và mỗi lần giảm đi một đơn vị bằng n--:
for (int n = 5; n >= 0; n--) {
showDigit(n);
delay(1000);
}Đoạn code này hiển thị 5, 4, 3, 2, 1 và 0. Với n > 0, vòng lặp sẽ dừng ở 1 và không bao giờ hiển thị 0.
Việc đếm ngược chỉ nên diễn ra một lần, không lặp đi lặp lại. Code trong setup() chạy một lần, vì vậy hãy đặt phần đếm ngược ở đó, rồi đến bất cứ việc gì cần xảy ra khi bộ đếm về 0. Bạn có thể để loop() trống, và số 0 sẽ giữ nguyên trên màn hình.
Thử thách
DễCòi báo nối với chân 9. Tạo màn đếm ngược trước khi phóng:
- trong
setup(), đếm ngược từ 5 đến 0, mỗi giây một số - khi đến 0, phát âm thanh bằng còi báo với
tone(buzzerPin, 880, 1000) - giữ số 0 trên màn hình
Nhấn Chạy, rồi nhấn Kiểm tra.
Tự làm thử
const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 8}; // a, b, c, d, e, f, g
// Mỗi chữ số có một mẫu, đọc từ bên phải: bit cuối cùng là đoạn a.
// gfedcba
const byte digits[10] = {
0b0111111, // 0
0b0000110, // 1
0b1011011, // 2
0b1001111, // 3
0b1100110, // 4
0b1101101, // 5
0b1111101, // 6
0b0000111, // 7
0b1111111, // 8
0b1101111 // 9
};
void showDigit(int n) {
for (int i = 0; i < 7; i++) {
if (bitRead(digits[n], i) == 1) {
digitalWrite(segmentPins[i], LOW); // sáng
} else {
digitalWrite(segmentPins[i], HIGH); // tắt
}
}
}
const int buzzerPin = 9;
void setup() {
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
// Đếm ngược từ 5 đến 0 ở đây, rồi cho còi kêu
}
void loop() {
}
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 Màn hình và cảm biến
1Màn hình LED 7 đoạn
Màn hình LED 7 đoạnMẫu chữ số trong byteĐếm trên màn hìnhĐếm ngược về 0Trình mô phỏng xúc xắcTự luyện tập: Playground Arduino