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,就像数字的最后一位。
挑战
中等让 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)
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
输出中的所有课
自己练习: Arduino 在线编辑器