// L1-015 4位二进制计数灯 教师完整版
// 位权定义:D13(8) D12(4) D11(2) D10(1)
int led_H8 = 13; // 最高位 8
int led_H4 = 12; // 次高位 4
int led_L2 = 11; // 次低位 2
int led_L1 = 10; // 最低位 1
int count = 0; // 全局计数变量
void setup()
{
// 批量初始化四路引脚为输出模式
pinMode(led_H8, OUTPUT);
pinMode(led_H4, OUTPUT);
pinMode(led_L2, OUTPUT);
pinMode(led_L1, OUTPUT);
}
void loop()
{
// 4位二进制逐位解码算法
digitalWrite(led_L1, (count % 2) == 1 ? HIGH : LOW);
digitalWrite(led_L2, ((count / 2) % 2) == 1 ? HIGH : LOW);
digitalWrite(led_H4, ((count / 4) % 2) == 1 ? HIGH : LOW);
digitalWrite(led_H8, ((count / 8) % 2) == 1 ? HIGH : LOW);
delay(600); // 计数刷新间隔
count++; // 数值自增
if(count > 15) // 4位二进制最大值2^4-1=15,溢出归零
{
count = 0;
}
}