0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino篇—外部中断

冬至子 来源:X的创客课堂 作者:MRXY 2023-11-01 17:29 次阅读

课程目标

  • 中断程序的应用
  • arduino的中断函数
  • 中断程序的实际应用

相关知识

中断程序: 中断程序可以看作是一段独立于主程序之外的程序,当中断触发时,控制器会暂停当前正在运行的主程序,而跳转去运行中断程序,中断程序运行完后,会再回到之前主程序暂停的位置,继续运行主程序。

图片

在程序的运行中,我们时常需要监控一些事件的发生,比如对某一传感器的返回数据进行解析。随着程序功能增加,轮询到指定功能时需要等待的时间变长,效率会很低。而使用中断方式检测,可以到达实时检测的效果。

**Arduino的中断函数:**外部中断和定时中断

外部中断的定义: 一般由外设发出中断请求,如:键盘中断、打印机中断、外部中断需外部中断源发出中断请求才能发中断。

attach interrupt(interrupt,function,mode)

1)interrupt: 中断号,UNO只用0,1,即代表D2,D3口

2)function:调用中断函数,中断发生时调用的函数

3)mode:中断触发模式

low 当针脚输入为低时,触发中断

change 当针脚输入发生变化时,触发中断

rising 当针脚由低变高时,触发中断

falling 当针脚由高到低时,触发中断

定时中断的定义: 是指主程序在运行一段程序过后自动进行的中断服务程序。

常见的定时库有FlexiTimer2.h和Ms.Timer2.h

void start() 开启定时中断

void stop() 关闭定时中断

#include< MsTimer2.h >
void flash()
{
static boolean cutput=HIGH;
digitalWrite(13,OUTPUT);
OUTPUT=!OUTPUT;
MsTimer2:set(500,flash);
MsTimer2:start();
}
void loop()
{}

使用外部中断注意:

1.中断服务程序不能够有参数和返回值,即void Function name(void){}
2.在中断函数中delay()函数将不起作用
3.在中断函数中millis()函数的值不会增加
4.得到的串行数据将会丢失
5.需在中断函数内部更改的值需声明为volatile类型

电路搭建

所需材料

ArduinoUNO * 1
震动传感器模块 * 1
LED * 1
220Ω电阻 * 1
杜邦线若干

电路连接

图片

程序编写

练习一:震动监测

不使用中断的方式实现监测到震动后,LED点亮两秒后熄灭,再次监测到震动后,再次点亮。

图形化方式:

直接用条件判断的方式实现了这个功能

图片

代码方式:

/* 项目名称:条件判断制作震动监测
 * 项目时间:2022.03.15
 * 项目作者:MRX
 */
const int LedPin = 9;
const int SensorPin = 2;
void setup() {
  pinMode(LedPin,OUTPUT);
  pinMode(SensorPin,INPUT);
  digitalWrite(LedPin,LOW);
}


void loop() {
  if(digitalRead(SensorPin) == LOW){
    digitalWrite(LedPin,HIGH);
    delay(1000);
  }
  else{
    digitalWrite(LedPin,LOW);
  }


}

练习二:震动监测

使用中断方式实现上述功能。

图形化方式:

图片

代码方式:

/* 项目名称:中断制作震动监测
 * 项目时间:2022.03.15
 * 项目作者:MRX
 */
const int LedPin = 9;
const int SensorPin = 2;
char state = LOW;
void setup() {
  pinMode(LedPin,OUTPUT);
  pinMode(SensorPin,INPUT);
  attachInterrupt(0, blink, FALLING);
  digitalWrite(LedPin,LOW);
}
void loop() {
   if (state == HIGH) {        // 如果state为HIGH
    state = LOW;
    digitalWrite(LedPin, HIGH);  // 亮灯
    delay(500);          //延时500ms
  }
  else {
    digitalWrite(LedPin, LOW);    // 否则,关灯
  }
}
void blink() {               //中断函数blink()
  state = !state;             //一旦中断触发,state状态反转
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2551

    文章

    51094

    浏览量

    753498
  • led灯
    +关注

    关注

    22

    文章

    1592

    浏览量

    107992
  • 外部中断
    +关注

    关注

    1

    文章

    131

    浏览量

    15823
  • Arduino
    +关注

    关注

    188

    文章

    6469

    浏览量

    187038
  • 定时中断
    +关注

    关注

    0

    文章

    19

    浏览量

    8555
收藏 人收藏

    评论

    相关推荐

    外部按键中断精准控制步进电机起保停,正反转(Arduino+TB6600驱动器)资料下载

    外部按键中断精准控制步进电机起保停,正反转(Arduino+TB6600驱动器)这次带来的是真正意义上的通过外部中断来实现控制的,前面一
    发表于 06-29 07:19

    Arduino外部中断的相关资料分享

    外部中断外部中断是由控制器设备发起的中断请求。停止再在执行的内容去执行中断函数中的内容
    发表于 02-15 06:34

    arduino定时中断外部中断怎么用?

    arduino定时中断怎么用和外部中断怎么用,可不可以和51单片机一样使用
    发表于 11-08 07:43

    stm32外部中断系列

    实现步骤1.如果串口中断先配置串口,gpio中断先配置gpio2.串口中断组的选择3.串口外部中断控制器时钟打开4.用
    发表于 11-26 12:36 2次下载
    stm32<b class='flag-5'>外部</b><b class='flag-5'>中断</b>系列

    arduino 中断 和millis语句

    arduino 中断 和millis语句Arduino中支持如下几种中断: RESET中断外部
    发表于 12-14 18:49 1次下载
    <b class='flag-5'>arduino</b> <b class='flag-5'>中断</b> 和millis语句

    Arduino中断学习

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录Arduino中断一、外部中断学习1、Arduino 开发板的
    发表于 12-16 16:47 3次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>中断</b>学习

    Arduino 外部中断

    外部中断外部中断是由控制器设备发起的中断请求。停止再在执行的内容去执行中断函数中的内容
    发表于 12-16 16:51 11次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>外部</b><b class='flag-5'>中断</b>

    arduino系列教程之触摸开关(外部中断)开关小灯led

    一、首先是要了解一下arduino中断模式有啥?哪些可以触发中断?二、接着是,了解不同芯片型号的arduino,可以接收外部
    发表于 12-16 16:51 8次下载
    <b class='flag-5'>arduino</b>系列教程之触摸开关(<b class='flag-5'>外部</b><b class='flag-5'>中断</b>)开关小灯led

    STM32外部中断

    中断都知道是怎么回事了外部中断是怎么配置的呐?外部中断又称IO中断/事件控制器(EXTI)
    发表于 01-14 15:14 2次下载
    STM32<b class='flag-5'>外部</b><b class='flag-5'>中断</b>

    STM32---外部中断

    目录1.外部中断描述2.外部中断框图总结:经过分析框图,可以产生软件中断和事件中断,软件
    发表于 01-14 15:25 7次下载
    STM32---<b class='flag-5'>外部</b><b class='flag-5'>中断</b>

    ARDUINO微控制器外部中断处理

    电子发烧友网站提供《ARDUINO微控制器外部中断处理.zip》资料免费下载
    发表于 10-27 11:50 2次下载
    <b class='flag-5'>ARDUINO</b>微控制器<b class='flag-5'>外部</b><b class='flag-5'>中断</b>处理

    第八章 外部中断

    第一节原理解读打算写一下中断,又忍不住想说一下中断的概念,去书上翻一翻,或者自己在搜索引擎上搜一下,都可以找到一大堆,包括本文写的这个外部中断也不例外。如果要写光是
    的头像 发表于 01-25 09:30 1415次阅读
    第八章 <b class='flag-5'>外部</b><b class='flag-5'>中断</b>

    STM32如何配置外部中断?STM32外部中断配置步骤

    STM32如何配置外部中断?STM32外部中断配置步骤  作为一款现代化的微控制器,STM32系列芯片在各种应用场合中广泛应用。其中最常见的应用是
    的头像 发表于 10-26 17:47 3560次阅读

    STM32外部中断大问题

    问题:一直进入中断,没有触发信号,也一直进入。描述:开PA0为外部中断,刚刚很好,一个触发信号一个中断中断函数没有丢,也没有抢跑,开PA1
    的头像 发表于 11-08 08:00 2295次阅读
    STM32<b class='flag-5'>外部</b><b class='flag-5'>中断</b>大问题

    外部中断的工作原理 外部中断方式有哪些 为什么要使用外部中断

    外部中断的工作原理是单片机响应外部事件的一种机制** **。
    的头像 发表于 01-28 17:37 3671次阅读