Arduino 外部中断与串口通信实验:按键计数和 LED 控制

目的:

  • 掌握 Arduino 的外部中断引脚有哪些,串行通行的接口是哪几个引脚,这在硬件层面上的应用很重要。
  • 掌握外部中断的触发与回调函数,串口通行的启动等。

实验内容:

  1. 按键计数实验:
    • 连接 1 个按键至外部中断引脚 2 上,ARDUINO 记录按键次数(采用中断方式,非查询方式),并通过串口打印按键次数。
  2. LED 控制实验:
    • 连接 2 个按键至外部中断引脚 2,3 上,同时自己选取其它的 5 个端口接 5 个 LED。
    • 以 2 号引脚按键次数为十位,3 号引脚按键次数为个位,将这二个按键的次数组合成十进制数后转化为二进制,要求控制 5 个 LED 以对应的二进制数显示,并将该二进制数打印在串口上显示。
    • 举例:2 号引脚按了 2 下,3 号引脚按了 3 下,获得十进制数 23,对应二进制数为 00010111,即控制标红的这四个灯点亮,并且串口显示 10111。

实验代码:

① 按键计数实验代码:

int count = 0;

void setup() {
  Serial.begin(9600);
  pinMode(2, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(2), buttonPressed, FALLING);
}

void loop() {
}

void buttonPressed() {
  count++;
  Serial.print('Button pressed ');
  Serial.print(count);
  Serial.println(' times.');
}

② 控制 LED 实验代码:

int ledPins[] = {3, 4, 5, 6, 7};

int button2Count = 0;
int button3Count = 0;

void setup() {
  Serial.begin(9600);
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(2), button2Pressed, FALLING);
  attachInterrupt(digitalPinToInterrupt(3), button3Pressed, FALLING);
  for(int i = 0; i < 5; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
}

void loop() {
  int binary = button2Count * 10 + button3Count;
  Serial.print('Binary: ');
  Serial.println(binary, BIN);
  for(int i = 0; i < 5; i++) {
    if(binary & (1 << i)) {
      digitalWrite(ledPins[i], HIGH);
    } else {
      digitalWrite(ledPins[i], LOW);
    }
  }
}

void button2Pressed() {
  button2Count++;
}

void button3Pressed() {
  button3Count++;
}

注意:

  • 将代码上传到 Arduino 开发板后,连接按键和 LED,并根据实验要求进行测试。
  • 以上代码示例仅供参考,您可以根据自己的需求进行修改和完善。
Arduino 外部中断与串口通信实验:按键计数和 LED 控制

原文地址: https://www.cveoy.top/t/topic/nP6a 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录