美文网首页16级创客教育理论与实践
米思齐分享-08-米思齐中断的使用,结合米思齐自带例程中的“中断

米思齐分享-08-米思齐中断的使用,结合米思齐自带例程中的“中断

作者: 李荷心0203 | 来源:发表于2018-11-14 15:20 被阅读4次
    我们要结合“中断延时灯”来学习一下米思齐中断的使用。我们学习的思路就是:先来巩固一下中断,再来学习一下延时灯,再在延时灯的基础上进一步'''学习中断延时灯。首先来看一下中断和延时灯:

    一、中断

    1. 什么是中断?

    打个比方吧,比如你在家看电视,突然家里电话铃响了,那么你不得不停下看电视先去接电话,等接完电话后,你又可以继续看电视啦!在整个过程中接电话就是一个中断过程,电话铃响就是中断的标志,即触发中断的条件。

    2.中断被触发的四种条件:

    ①LOW(低)当引脚为低电平时,触发中断。

    ②CHANGE(改变)当引脚电平发生改变时,触发中断。

    ③RISING(上升)当引脚由低电平变为高电平时,触发中断。

    ④FALLING(下降)当引脚由高电平变为低电平时,触发中断。

    3.中断可以使用的管脚:

    Arduino Uno:管脚#2(对应中断0)和管脚#3(对应中断1)。

    二、延时灯

    1.制作目标:

    完成一个日常生活中常用的延时灯的制作,默认情况下,灯是灭的,当用户按下一次按键后,灯亮,等1秒后再灭。

    2.物理连接与元件:

    ①UNO主控板与DFRduino UNO R3 传感器IO扩展板相连;

    ②LED发光模块:与数字10端口相连;

    ③按钮模块:与数字2端口相连;

    ④导线

    LED发光模板 IO传感拓展版 按键

    3.思路分析:

    当按钮被按下时,向2号管脚输入高电平,此时10号管脚应输出高电平(即按下按钮,灯亮);

    当按钮被抬起时,向2号管脚输入低电平,此时10号管脚应输出低电平(即抬起按钮,灯灭)。

    4. 程序编写:

    ①这段程序编写是错误的,输入包含两种状态,无法对应输出的两种状态。

    数字输入:支持管脚:0-13、A0-A5(不用0、1);

         两种状态:高(按钮按下)、低(按钮抬起)

    ②这段程序编写是正确的。将管脚#2的数字输入作为判断条件,当结果为真时(即按钮按下时),管脚#10输出为高电平(即灯亮)并延时3s后灭;当结果不为真时(即按钮抬起时),管脚#10输出为低电平(即灯灭)。

    如果:

    上口(向右开)插入判断条件,结果有“真”、“假”两种可能。

    下口(上下开)插入当判断条件为“真”时执行的代码,判断条件的结果为“假”时,则不执行这段代码。

    5. 电路连接

    电路连接图
    下面我们来重点分析一下中断延时灯的代码。

    三、延时灯的改进——中断延时灯

    1.使用按钮模拟开关——按下长亮,再按下一秒后灭

    ①用中断方式

    ②理解中断的概念

    ③只有2,3管脚可以用

    2. 总的代码分析

    上面部分的代码实现了按下长亮的功能。管脚#2实现了上升沿的中断,即按下按钮时灯长亮。并把管脚#10的输出(即灯亮)设为下面代码部分的输入,实现中断功能的回调。下面部分的代码实现了再按下一秒后灭的功能(函数中是按下按钮,延时三秒后,管脚#10输出变为低电平)。

    3.分步代码分析

    ①初始化模块

    初始化模板

    由于直接放在程序构建区的模块是在loop函数中循环运行的,如果我们希望某个程序模块只在初始化时运行,就需要将对应的模块放在初始化模块中。

    对应的就是setup函数,包含在模块中的代码都会放在setup 函数中,不过由于代码中本身就包含setup函数,所以这个操作看起来没有任何效果。

    ②中断控制模块

    中断控制模板

    中断控制模块生成的代码分为两部分,一部分是在程序主体中完成的一个函数,如下:

    attachInterrupt

    (digitalPinTolnterrupt (2),

    attachInterrupt_fun_ 2,RISING);

    另一部分是实现中断功能的回调函数,如下(包含在中断控制模块中的模块产生的代码都是放在这个回调函数中):

    void attachInterrupt_fun_2()

    {

    }

    ③延时模块

    delay(3000);

    ④如果执行模块

    执行模板

    If(false)

    {

    }

    ⑤输入/输出模块

    输入/输出模板

    因为高低数值模块需要和其他模块配合才能体现出来,所以这里将“输入/输出”分类中的前两个模块结合进行代码对照。说明:高低模块中,“低”对应参数LOW, “高”对应参数HIGH。

    digitalRead(10);

    digitalWrite(10,LOW);

    4.与Arduino代码对照分析

    与Arduino代码对照分析图

    四、实验结果与反思

    ①我们在详细研究代码后,准备进行实验,然而米思齐参考课程的资料中显示的物理元件我们在Arduino套件中没有找到,然后我们就重新做了做Arduino的中断实验,基本实现了中断延时灯。

    实验结果

    ②通过新阳老师的点评,我们对PPT进行了修改,将讲解的部分代码从总的代码中拆分和标记出来,使每一页既有总的代码又有放大的分步代码,并对米思齐代码和Arduino代码做了标注对照,这样更加清晰明确,是我们在PPT的制作上的一个大的收获。

    相关文章

      网友评论

        本文标题:米思齐分享-08-米思齐中断的使用,结合米思齐自带例程中的“中断

        本文链接:https://www.haomeiwen.com/subject/gfhjfqtx.html