Arduino 外部中断与串口通信实验步骤详解

目的:

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

实验步骤:

1. 连接 1 个按键至外部中断引脚 2 上,连接 Arduino 板子至电脑,打开 Arduino IDE 软件,输入以下代码:

int count = 0; // 记录按键次数

void setup() {
  Serial.begin(9600); // 设置串口波特率
  pinMode(2, INPUT_PULLUP); // 设置2号引脚为输入模式,启用下拉电阻
  attachInterrupt(digitalPinToInterrupt(2), buttonPress, FALLING); // 设置引脚2为外部中断触发下降沿
}

void loop() {
  // 程序主循环
}

void buttonPress() { // 按键中断触发函数
  count++; // 按键次数加1
  Serial.println(count); // 打印按键次数
}

2. 烧录代码至 Arduino 板子,打开串口监视器,按下按键,可以看到按键次数被打印出来。

3. 连接 2 个按键至外部中断引脚 2,3 上,同时自己选取其它的 5 个端口接 5 个 LED,连接 Arduino 板子至电脑,打开 Arduino IDE 软件,输入以下代码:

int count2 = 0; // 记录2号引脚按键次数
int count3 = 0; // 记录3号引脚按键次数
int ledPins[] = {4, 5, 6, 7, 8}; // 存储LED引脚号
int binaryValue = 0; // 十进制数转化为二进制数值

void setup() {
  Serial.begin(9600); // 设置串口波特率
  pinMode(2, INPUT_PULLUP); // 设置2号引脚为输入模式,启用下拉电阻
  pinMode(3, INPUT_PULLUP); // 设置3号引脚为输入模式,启用下拉电阻
  for (int i = 0; i < 5; i++) {
    pinMode(ledPins[i], OUTPUT); // 设置LED引脚为输出模式
  }
  attachInterrupt(digitalPinToInterrupt(2), buttonPress2, FALLING); // 设置引脚2为外部中断触发下降沿
  attachInterrupt(digitalPinToInterrupt(3), buttonPress3, FALLING); // 设置引脚3为外部中断触发下降沿
}

void loop() {
  // 程序主循环
  binaryValue = count2 * 10 + count3; // 将按键次数组合成十进制数
  // 控制LED灯亮灭
  for (int i = 0; i < 5; i++) {
    digitalWrite(ledPins[i], (binaryValue >> i) & 1); // 将二进制数对应的位上的值赋给LED引脚
  }
  Serial.println(binaryValue, BIN); // 打印二进制数
}

void buttonPress2() { // 2号引脚按键中断触发函数
  count2++; // 2号引脚按键次数加1
}

void buttonPress3() { // 3号引脚按键中断触发函数
  count3++; // 3号引脚按键次数加1
}

4. 烧录代码至 Arduino 板子,打开串口监视器,按下 2 号和 3 号按键,可以看到 LED 灯亮灭以及二进制数被打印出来。

注意:

  • 本实验可以使用 Proteus 和 Arduino IDE 进行模拟和验证。
  • 代码中需要根据实际连接情况修改引脚号和 LED 的数量。
  • 在使用外部中断时,需要注意中断优先级和中断处理函数的执行时间,避免出现中断冲突或程序死锁。

相关资源:

  • Arduino 官方网站:https://www.arduino.cc/
  • Arduino 语言参考:https://www.arduino.cc/en/Reference/HomePage
  • Proteus 软件官网:https://www.labcenter.com/

实验结果:

  • 通过本实验,您将能够理解并应用 Arduino 的外部中断和串口通信功能。
  • 您可以根据自己的创意,设计更多基于外部中断和串口通信的应用。
Arduino 外部中断与串口通信实验步骤详解

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

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