Menu
CoddyTech

LED 二进制计数器

本课属于 Coddy Arduino 学习旅程的“输出”单元。第 19 课,共 24 课。

4 个 LED 可以用二进制显示 0 到 15 的任意数字,这也是计算机存储数字的方式。每个 LED 所代表的位的值都是前一位的两倍:1、2、4 和 8。点亮的 LED 会加上它的值:

  • 5 是 4 + 1:代表 4 和 1 的 LED 会亮起
  • 10 是 8 + 2
  • 15 表示 4 个 LED 全部亮起

每个位称为一个 bit,从 0 开始编号,编号 0 的位代表 1。bitRead(number, n) 会返回数字中第 n 位的值,1 或 0:

bitRead(5, 0);  // 1:5 包含 1
bitRead(5, 1);  // 0:5 不包含 2
bitRead(5, 2);  // 1:5 包含 4

由于 1 是 HIGH,0 是 LOW,因此可以将位 i 直接连接到 LED i:

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

这里,ledPins[0] 对应引脚 2,是右侧的 LED,代表 1,就像数字的最后一位。

challenge icon

挑战

中等

让 4 个 LED 按二进制计数:

  • 将 count 设为 0
  • 使用 bitRead() 在 LED 上显示计数值,让第 i 位对应 ledPins[i]
  • 等待 250 ms,加 1,并在计数到 15 后重新从 0 开始

按“运行”,然后按“检查”。

亲手试试

int ledPins[] = {2, 3, 4, 5};  // 分别代表 1、2、4、8
int count = 0;

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

void loop() {
  // 以二进制显示 count,等待 250 ms,然后递增(到 15 后回到 0)
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

输出中的所有课

自己练习: Arduino 在线编辑器