太行摄狼 发表于 2013-2-22 21:05:17

中断很有用啊,资料收下,谢谢了

<一一巛 发表于 2013-3-5 11:11:04

交作业:lolint i=0;
void setup(){
pinMode(2, INPUT_PULLUP); //设置引脚为上拉输入模式
pinMode(11,OUTPUT);       //LED控制脚
attachInterrupt(0,bt,FALLING);//按钮切换LED状态
}

void loop(){
digitalWrite(11,i);
}
void bt(){
i=!i;
delay(2000);
}

wjm251 发表于 2013-3-10 23:37:28

弘毅 发表于 2012-10-29 13:00 static/image/common/back.gif
额。。。闸刀开关在接触的那一瞬间,应该也是有抖动的。。不过闸刀一般是大功率地方用吧。。那点抖动可 ...

这个例子里头讲的是中断,而你连接的是普通按键读取时做软件消抖,
那中断的按键判断已经被封装了,自己程序中不能再读引脚的值,怎么消逗啊,看下17楼的程序,也是一样

弘毅 发表于 2013-3-11 12:05:51

wjm251 发表于 2013-3-10 23:37 static/image/common/back.gif
这个例子里头讲的是中断,而你连接的是普通按键读取时做软件消抖,
那中断的按键判断已经被封装了,自己 ...

硬件消抖,也就是并联电容。

wjm251 发表于 2013-3-11 22:26:33

弘毅 发表于 2013-3-11 12:05 static/image/common/back.gif
硬件消抖,也就是并联电容。

只能硬件消抖了? 手里没有电容,不知效果是否好。
我模仿试验教程做了个按钮控制流水灯方向的例子,也有这个问题,代码如下,也不复杂,按钮常不灵。


//按一下按钮,灯就会改变方向

boolean order = false;
int time=130;// 流水灯的间隔时间

void setup ()
{            
        for (int i=4; i<=7; i++)    //4 5 6 7设置为流水灯
        {
                pinMode(i,OUTPUT);
        }
        attachInterrupt(0, stateChange, FALLING);//D2做中断,电压下降触发,也就是放开按键时
}

void flashPin(int x)
{
        digitalWrite(x,HIGH);
        delay(time);
        digitalWrite(x,LOW);
        delay(time);
}
void loop()
{
        static int currentPin = 7;//最初由7号引脚开始闪
        flashPin(currentPin);
       
        /*
        order为true时减3余4,相当于增1个,7增1返回4,表示4->5->6->7->4
        order为false时减1余4,相当于降1个,4降1返回7,表示7->6->5->4->7
        */
        currentPin = ((currentPin - (order?3:1))%4+4);
}
//中断处理,触发后反转顺序
void stateChange()
{
        order=!order;
}

fly58888 发表于 2013-3-27 20:48:36

看弘毅大哥的帖子真是受益匪浅,程序和贴图都清晰明了,很享受!

玄冰之神 发表于 2013-4-15 16:58:41

:P学一天了。。继续。。

浅缘 发表于 2013-4-16 21:49:41

第一幅图接线直接把开关短路了吧、、、

arduino_ykk 发表于 2013-5-19 14:41:27

迷你强 发表于 2012-10-29 10:14 static/image/common/back.gif
响应速度

为什么第一个实验,小灯在没有按钮触发的情况下会是亮的?好像要有状态变化的信号灯才会变化吧?可是我在代码里面没有看到让小灯变亮的语句。

弘毅 发表于 2013-5-19 15:10:50

arduino_ykk 发表于 2013-5-19 14:41 static/image/common/back.gif
为什么第一个实验,小灯在没有按钮触发的情况下会是亮的?好像要有状态变化的信号灯才会变化吧?可是我在 ...

state = digitalRead(pbIn);      //读取微动开关状态

digitalWrite(ledOut, state);    //把读取的状态赋予LED指示灯

这两个语句就是改变灯状态~

arduino_ykk 发表于 2013-5-19 21:28:50

谢谢,这篇有点抽象了

天空树 发表于 2013-6-13 17:59:17

弘毅 发表于 2013-5-19 15:10 static/image/common/back.gif
state = digitalRead(pbIn);      //读取微动开关状态

digitalWrite(ledOut, state);    //把读取的状 ...

你好,中断分为内部中断和外部中断,这篇只讲了外部中断。我在使用的过程中,并没有发现Arduino有内部中断,没有串口中断和定时中断,导致我有些东西无法实现,请问这该怎么解决呢?

弘毅 发表于 2013-6-13 21:46:05

天空树 发表于 2013-6-13 17:59 static/image/common/back.gif
你好,中断分为内部中断和外部中断,这篇只讲了外部中断。我在使用的过程中,并没有发现Arduino有内部中断 ...

内部中断可以直接使用AVR GCC~~~不知道有没有封装后的库~

天空树 发表于 2013-6-14 17:19:53

弘毅 发表于 2013-6-13 21:46 static/image/common/back.gif
内部中断可以直接使用AVR GCC~~~不知道有没有封装后的库~

但愿早一点出封装的库,不然我又得学AVR了。

瘦网虫 发表于 2013-7-4 20:26:03

纠正个小错误:

attachInterrupt(pbIn, stateChange, CHANGE);
这句有错,
改成
attachInterrupt(0, stateChange, CHANGE);
才能用。

参考官方语言参考
http://arduino.cc/en/Reference/AttachInterrupt
:lol
页: 1 [2] 3 4 5 6
查看完整版本: Arduino入门教程--第十九课--Arduino中断的使用