给出下列实验详细步骤外部中断与串口通行实验目的:掌握 ARDUINO 的外部中断引脚有哪些串行通行的接口是哪几个引脚 这在硬件层面上的应用很重要。掌握外部中断的触发与回调函数串口通行的启动等。内容①连接 1 个按键至外部中断引脚 2 上ARDUINO 记录按键次数采用中断方式非查询方式并通过串口打印按键次数;②连接 2 个按键至外部中断引脚 23 上同时自己选取其它的 5 个端口接 5 个 LED
实验步骤:
- 连接 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); // 打印按键次数
}
-
烧录代码至 Arduino 板子,打开串口监视器,按下按键,可以看到按键次数被打印出来。
-
连接 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
}
- 烧录代码至 Arduino 板子,打开串口监视器,按下 2 号和 3 号按键,可以看到 LED 灯亮灭以及二进制数被打印出来
原文地址: https://www.cveoy.top/t/topic/efO0 著作权归作者所有。请勿转载和采集!