实验器材:

  • Arduino UNO开发板
  • 1个按键
  • 2个按键
  • 5个LED灯
  • 杜邦线

实验步骤:

  1. 连接1个按键至外部中断引脚2 将按键的一端连接到数字引脚2,另一端连接到GND。通过编写中断函数,在按键按下时增加计数器并通过串口打印计数器的值。

  2. 连接2个按键至外部中断引脚2,3以及5个LED 将第一个按键的一端连接到数字引脚2,另一端连接到GND;将第二个按键的一端连接到数字引脚3,另一端连接到GND。通过编写中断函数,在按键按下时增加计数器并将计数器的值转化为二进制数,通过数字引脚控制对应的LED灯点亮,并通过串口打印计数器的二进制数。

  3. 编写代码 打开Arduino IDE,新建一个空白文档,输入以下代码:

int count_2 = 0; // 2号引脚按键计数器
int count_3 = 0; // 3号引脚按键计数器

void setup() {
  pinMode(2, INPUT_PULLUP); // 设置2号引脚为输入模式,启用内部上拉电阻
  pinMode(3, INPUT_PULLUP); // 设置3号引脚为输入模式,启用内部上拉电阻
  pinMode(4, OUTPUT); // 设置4号引脚为输出模式,用于控制LED
  pinMode(5, OUTPUT); // 设置5号引脚为输出模式,用于控制LED
  pinMode(6, OUTPUT); // 设置6号引脚为输出模式,用于控制LED
  pinMode(7, OUTPUT); // 设置7号引脚为输出模式,用于控制LED
  pinMode(8, OUTPUT); // 设置8号引脚为输出模式,用于控制LED
  Serial.begin(9600); // 启动串口通信
  attachInterrupt(digitalPinToInterrupt(2), isr_2, FALLING); // 将2号引脚设置为中断触发引脚,中断类型为下降沿触发
  attachInterrupt(digitalPinToInterrupt(3), isr_3, FALLING); // 将3号引脚设置为中断触发引脚,中断类型为下降沿触发
}

void loop() {
}

void isr_2() { // 2号引脚中断函数
  count_2++; // 按键计数器加1
  Serial.print("2号引脚按键次数: ");
  Serial.println(count_2); // 打印按键次数
}

void isr_3() { // 3号引脚中断函数
  count_3++; // 按键计数器加1
  int num = count_2 * 10 + count_3; // 将计数器值合并为十进制数
  String binary = String(num, BIN); // 将十进制数转化为二进制字符串
  Serial.print("二进制数: ");
  Serial.println(binary); // 打印二进制数
  for (int i = 0; i < 5; i++) { // 控制LED点亮
    if (binary.charAt(i) == '1') { // 如果二进制数的第i位为1,则点亮第i个LED
      digitalWrite(i + 4, HIGH);
    } else {
      digitalWrite(i + 4, LOW); // 否则关闭第i个LED
    }
  }
}
  1. 上传代码 将Arduino开发板通过USB连接到电脑,选择对应的板子和串口,并点击上传按钮将代码上传到开发板中。

  2. 实验验证 按下连接到2号引脚的按键,通过串口监视器观察计数器的值是否增加。按下连接到2号和3号引脚的按键,通过串口监视器观察LED是否按照计数器的值点亮,并观察串口监视器是否打印出计数器的二进制数

给出下列实验详细步骤外部中断与串口通行实验目的:掌握 ARDUINO 的外部中断引脚有哪些串行通行的接口是哪几个引脚 这在硬件层面上的应用很重要。掌握外部中断的触发与回调函数串口通行的启动等。内容:①连接 1 个按键至外部中断引脚 2 上ARDUINO 记录按键次数采用中断方式非查询方式并通过串口打印按键次数;②连接 2 个按键至外部中断引脚 23 上同时自己选取其它的 5 个端口接 5 个 LE

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

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