Arduino 外部中断与串口通信实验:按键计数和 LED 控制
Arduino 外部中断与串口通信实验:按键计数和 LED 控制
目的:
- 掌握 Arduino 的外部中断引脚有哪些,串行通行的接口是哪几个引脚,这在硬件层面上的应用很重要。
- 掌握外部中断的触发与回调函数,串口通行的启动等。
实验内容:
- 按键计数实验:
- 连接 1 个按键至外部中断引脚 2 上,ARDUINO 记录按键次数(采用中断方式,非查询方式),并通过串口打印按键次数。
- 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,并根据实验要求进行测试。
- 以上代码示例仅供参考,您可以根据自己的需求进行修改和完善。
原文地址: https://www.cveoy.top/t/topic/nP6a 著作权归作者所有。请勿转载和采集!