《Arduino开发实战指南:机器人卷》一2.5 中断函数

简介:

本节书摘来华章计算机《Arduino开发实战指南:机器人卷》一书中的第2章 ,第2.5节,黄文恺 伍冯洁 陈 虹 编著更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.5 中断函数

单片机的中断可概述为:由于某一随机事件的发生,单片机暂停原程序的运行,转去执行另一程序(随机事件),处理完毕后又自动返回原程序继续运行,其发生过程如图2.2所示,其中中断源、主程序、中断服务程序简述如下。
中断源:引起中断的原因,或能发生中断申请的来源。
主程序:单片机现在运行的程序。
中断服务程序:处理中断事件的程序。

2.5.1 interrupts()和noInterrupts()

在Arduino中,interrupts函数与noInterrupts函数分别负责打开与关闭总中断,这两个函数均为无返回值函数,无参数。

2.5.2 attachInterrupt(interrput,function,mode)

attachInterrupt函数用于设置外部中断,有3个参数,分别表示中断源、中断处理函数和触发模式,它们的具体含义如下。
中断源:可选0或者1,对应2或者3号数字引脚。
中断处理函数:指定中断的处理函数,是一段子程序,当中断发生时执行该子程序部分,其中参数值为函数的指针。
触发模式:有四种类型——LOW(低电平触发)、CHANGE(变化时触发)、RISING(低电平变为高电平触发)、FALLING(高电平变为低电平触发)
数字引脚D2口接按钮开关,D4口接LED1(红色),D5口接LED2(绿色),LED3为板载LED灯,每秒闪烁一次。使用中断0来控制LED1,中断1来控制LED2。按下按钮,马上响应中断,由于中断响应速度快,LED3不受影响,继续闪烁。该示例的程序清单如下:

volatile int state1=LOW,state2=LOW;
int LED1=4;
int LED2=5;
int LED3=13;                    // 使用板载的LED灯
void setup()
{ 
  pinMode(LED1,OUTPUT);
  pinMode(LED2,OUTPUT);
  pinMode(LED3,OUTPUT);
  attachInterrupt(0,LED1_Change,LOW);        // 低电平触发
  attachInterrupt(1,LED2_Change,CHANGE);    // 任意电平变化触发
}
void loop()
{ 
  digitalWrite(LED3,HIGH); 
  delay(500);
  digitalWrite(LED3,LOW);
  delay(500);
}
void LED1_Change()
{ 
  state1=!state1;
  digitalWrite(LED1,state1);
  delay(100);
}
void LED2_Change()
{
  state2=!state2;
  digitalWrite(LED2,state2);
  delay(100);
}

2.5.3 detachInterrupt(interrput)

detachInterrupt函数用于取消中断,参数interrupt表示所要取消的中断源。

相关文章
|
2月前
|
人工智能 机器人 人机交互
哥大华人开发人脸机器人,照镜子自主模仿人类表情超逼真
【4月更文挑战第3天】哥伦比亚大学研究人员开发了一款名为Emo的机器人,能观察并模仿人类面部表情,实现更自然的人机交互。Emo配备26个面部执行器和高分辨率摄像头,通过“自我建模”学习模仿表情,并能预测人类表情变化。这一创新有望改善人机理解和响应情绪的能力,应用于教育、医疗等领域,但也引发了关于情感依赖和伦理问题的讨论。
69 4
哥大华人开发人脸机器人,照镜子自主模仿人类表情超逼真
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
Midjourney是一个基于GPT-3.5系列接口开发的免费AI机器人
Midjourney是一个基于GPT-3.5系列接口开发的免费AI机器人
28 0
|
28天前
|
机器人 API 开发者
Python基于Mirai开发的QQ机器人保姆式教程(亲测可用)
Python基于Mirai开发的QQ机器人保姆式教程(亲测可用)
|
2月前
|
传感器 数据采集 人工智能
LabVIEW开发微控制器控制的并行机器人的实时视觉图像处理
LabVIEW开发微控制器控制的并行机器人的实时视觉图像处理
37 1
|
2月前
|
传感器 人工智能 算法
LabVIEW开发灭火器机器人
LabVIEW开发灭火器机器人
27 0
|
2月前
|
缓存 数据可视化 安全
开发阿里云 RPA 机器人的技巧
在当今数字化时代,机器人流程自动化(RPA)技术正逐渐成为企业提高效率和优化业务流程的重要手段。阿里云 RPA 作为一种强大的工具,为开发高效的机器人提供了丰富的功能和支持。本文将分享一些开发阿里云 RPA 机器人的技巧,帮助您更好地利用该平台的能力。
|
2月前
|
人工智能 自然语言处理 机器人
自然语言开发AI应用,利用云雀大模型打造自己的专属AI机器人
如今,大模型层出不穷,这为自然语言处理、计算机视觉、语音识别和其他领域的人工智能任务带来了重大的突破和进展。大模型通常指那些参数量庞大、层数深、拥有巨大的计算能力和数据训练集的模型。 但不能不承认的是,普通人使用大模型还是有一定门槛的,首先大模型通常需要大量的计算资源才能进行训练和推理。这包括高性能的图形处理单元(GPU)或者专用的张量处理单元(TPU),以及大内存和高速存储器。说白了,本地没N卡,就断了玩大模型的念想吧。 其次,大模型的性能往往受到模型调优和微调的影响。这需要对模型的超参数进行调整和优化,以适应特定任务或数据集。对大模型的调优需要一定的经验和专业知识,包括对深度学
自然语言开发AI应用,利用云雀大模型打造自己的专属AI机器人
|
2月前
|
传感器 人工智能 监控
智能耕耘机器人
智能耕耘机器人
76 3
|
9月前
|
人工智能 自然语言处理 机器人
智能电话机器人核心技术:自然语言处理
什么是自然语言处理? 自然语言处理是计算机科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法.自然语言处理是一门融语言学、计算机科学、数学于一体的科学.因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别. 自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统.因而它是计算机科学的一部分. 自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域.
|
2月前
|
自然语言处理 机器人 Go
【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手
【飞书ChatGPT机器人】飞书接入ChatGPT,打造智能问答助手
134 0

热门文章

最新文章