arduino测试题

使用LED1—LED4实现二进制加法运算
LED1—LED4组成四位二进制数,其中LED灭代表0,LED亮代表1;
用该二进制数来表示按键KEY1按下并抬起的次数;
次数不超过15次,若超过15次重新计数。

该回答引用ChatGPT

使用LED1-LED4实现二进制加法运算的Arduino程序:
c

int key1 = 2;     // KEY1连接到数字2引脚 
int led1 = 3;     // LED1连接到数字3引脚
int led2 = 4;     // LED2连接到数字4引脚 
int led3 = 5;     // LED3连接到数字5引脚
int led4 = 6;     // LED4连接到数字6引脚
int count = 0;    // 按键按下次数 

void setup() {
  pinMode(key1, INPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
}

void loop() {
  if (digitalRead(key1) == HIGH) {  // 检测KEY1是否按下
    delay(10);  // 延时消抖
    count++;    // 次数加1
    if (count > 15) count = 0;   // 次数超过15重新计数
  }
  
  if (count == 0) {        // 次数为0,全部LED熄灭
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW);  
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW); 
  } else if (count <= 1) { // 次数为1,LED1亮
    digitalWrite(led1, HIGH);
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);  
    digitalWrite(led4, LOW);
  } else if (count == 2) { // 次数为2,LED1、LED2亮
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
  }  // 类似逻辑继续写出其他情况  
}

这个程序实现的主要逻辑如下:

  1. 检测KEY1是否按下,如果按下就让count加1并判断是否超过15次。
  2. 根据count的值决定LED1-LED4的亮灭状态,来表示count的二进制代码。
  3. count小于等于15时正常显示,超过15时重新从0开始显示。
  4. 使用delay()函数去抖,避免因信号抖动导致误触发。
  5. 根据count的不同取值判断LED1-LED4的状态,实现二进制加法的显示效果。