给出下列实验详细步骤外部中断与串口通行实验目的:掌握 ARDUINO 的外部中断引脚有哪些串行通行的接口是哪几个引脚 这在硬件层面上的应用很重要。掌握外部中断的触发与回调函数串口通行的启动等。内容:①连接 1 个按键至外部中断引脚 2 上ARDUINO 记录按键次数采用中断方式非查询方式并通过串口打印按键次数;②连接 2 个按键至外部中断引脚 23 上同时自己选取其它的 5 个端口接 5 个 LE
实验器材:
- Arduino UNO开发板
- 1个按键
- 2个按键
- 5个LED灯
- 杜邦线
实验步骤:
-
连接1个按键至外部中断引脚2 将按键的一端连接到数字引脚2,另一端连接到GND。通过编写中断函数,在按键按下时增加计数器并通过串口打印计数器的值。
-
连接2个按键至外部中断引脚2,3以及5个LED 将第一个按键的一端连接到数字引脚2,另一端连接到GND;将第二个按键的一端连接到数字引脚3,另一端连接到GND。通过编写中断函数,在按键按下时增加计数器并将计数器的值转化为二进制数,通过数字引脚控制对应的LED灯点亮,并通过串口打印计数器的二进制数。
-
编写代码 打开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
}
}
}
-
上传代码 将Arduino开发板通过USB连接到电脑,选择对应的板子和串口,并点击上传按钮将代码上传到开发板中。
-
实验验证 按下连接到2号引脚的按键,通过串口监视器观察计数器的值是否增加。按下连接到2号和3号引脚的按键,通过串口监视器观察LED是否按照计数器的值点亮,并观察串口监视器是否打印出计数器的二进制数
原文地址: https://www.cveoy.top/t/topic/efOx 著作权归作者所有。请勿转载和采集!