实例一:使用LED灯和按钮模拟外部中断
1. 准备材料
- 一个LED灯
- 一个按钮
- 一个面包板
- 一些跳线
- 一个微控制器(如Arduino)
2. 连接电路
- 将LED灯的正极连接到微控制器的数字输出引脚(例如D13)
- 将LED灯的负极连接到地(GND)
- 将按钮的一端连接到微控制器的数字输入引脚(例如D2)
- 将按钮的另一端连接到地(GND)
3. 编写代码
const int buttonPin = 2; // 按钮连接到数字引脚2
const int ledPin = 13; // LED连接到数字引脚13
void setup() {
pinMode(ledPin, OUTPUT); // 设置LED引脚为输出模式
pinMode(buttonPin, INPUT_PULLUP); // 设置按钮引脚为输入模式,并启用内部上拉电阻
}
void loop() {
if (digitalRead(buttonPin) == LOW) { // 如果按钮被按下
digitalWrite(ledPin, HIGH); // 点亮LED灯
delay(500); // 延时500毫秒
digitalWrite(ledPin, LOW); // 熄灭LED灯
}
}
4. 解释原理
- 当按钮被按下时,微控制器会检测到引脚上的电压变化,从而触发外部中断。
- 在这个例子中,当按钮被按下时,LED灯会点亮,然后熄灭,模拟外部中断的效果。
实例二:使用传感器和微控制器实现外部中断
1. 准备材料
- 一个红外传感器
- 一个微控制器(如Arduino)
- 一些跳线
2. 连接电路
- 将红外传感器的输出引脚连接到微控制器的数字输入引脚(例如D3)
- 将微控制器的另一个数字输出引脚连接到LED灯
3. 编写代码
const int sensorPin = 3; // 红外传感器连接到数字引脚3
const int ledPin = 13; // LED连接到数字引脚13
void setup() {
pinMode(ledPin, OUTPUT); // 设置LED引脚为输出模式
pinMode(sensorPin, INPUT); // 设置传感器引脚为输入模式
attachInterrupt(digitalPinToInterrupt(sensorPin), sensorInterrupt, FALLING); // 当传感器引脚从高电平变为低电平时触发中断
}
void loop() {
// 主循环中不做任何事情,所有的工作都在中断服务例程中完成
}
void sensorInterrupt() {
digitalWrite(ledPin, HIGH); // 当红外传感器检测到物体时,点亮LED灯
delay(1000); // 延时1000毫秒
digitalWrite(ledPin, LOW); // 熄灭LED灯
}
4. 解释原理
- 当红外传感器检测到物体时,其输出引脚的电平会从高电平变为低电平,从而触发外部中断。
- 在这个例子中,当红外传感器检测到物体时,LED灯会点亮,然后熄灭,模拟外部中断的效果。
通过这两个实例,孩子们可以直观地了解外部中断的工作原理,并通过实际操作加深对知识的理解。同时,这些实例也具有一定的趣味性,能够激发孩子们的学习兴趣。
