Menu
CoddyTech

Bộ đếm nhị phân bằng đèn LED

Thuộc phần Đầu ra trong hành trình Arduino của Coddy. Bài học 19 trên 24.

Bốn đèn LED có thể biểu thị mọi số từ 0 đến 15 ở dạng nhị phân, giống cách máy tính lưu trữ số. Mỗi đèn LED tương ứng với một vị trí có giá trị gấp đôi vị trí trước đó: 1, 2, 4 và 8. Đèn LED sáng sẽ cộng thêm giá trị của nó:

  • 5 là 4 + 1: đèn LED có giá trị 4 và 1 sáng
  • 10 là 8 + 2
  • 15 là cả bốn đèn

Mỗi vị trí được gọi là một bit, được đánh số bắt đầu từ 0, tức vị trí có giá trị 1. bitRead(number, n) trả về bit n của một số, là 1 hoặc 0:

bitRead(5, 0);  // 1: 5 có bit 1
bitRead(5, 1);  // 0: 5 không có bit 2
bitRead(5, 2);  // 1: 5 có bit 4

Vì 1 là HIGH và 0 là LOW, bit i có thể nối trực tiếp với đèn LED i:

for (int i = 0; i < 4; i++) {
  digitalWrite(ledPins[i], bitRead(count, i));
}

Ở đây, ledPins[0], chân 2, là đèn LED bên phải, có giá trị 1, giống như chữ số cuối cùng của một số.

challenge icon

Thử thách

Trung bình

Cho bốn đèn LED đếm theo hệ nhị phân:

  • bắt đầu với count bằng 0
  • hiển thị giá trị này trên các đèn LED bằng bitRead(), bit i trên ledPins[i]
  • chờ 250 ms, cộng thêm 1 và sau 15 thì bắt đầu lại từ 0

Nhấn Chạy, rồi nhấn Kiểm tra.

Tự làm thử

int ledPins[] = {2, 3, 4, 5};  // tương ứng với 1, 2, 4, 8
int count = 0;

void setup() {
  for (int i = 0; i < 4; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
}

void loop() {
  // hiển thị count ở dạng nhị phân, đợi 250 ms, rồi tăng count (trở về 0 sau 15)
}
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 Đầu ra

Tự luyện tập: Playground Arduino