seuabb 发表于 2013-1-5 15:24:07

中断的例子

我用的是arduino给的参考例子
//Example:

int pin = 13;
volatile int state = LOW;

void setup()
{
pinMode(pin, OUTPUT);
attachInterrupt(0, blink, CHANGE);
}

void loop()
{
digitalWrite(pin, state);
}

void blink()
{
state = !state;
}

问个很弱的问题。如果我想触发中断,用一根导线连Arduino板载5V和pin脚3,然后断开,这样是不是应该能看到LED13亮灭。
为什么实际上是灯一直处于亮的状态……求解惑。或者是我需要接电阻,再连到pin脚3?

ttyp 发表于 2013-1-5 15:48:26

实际是有效果的,不过灯还没灭,它又亮了,眼睛看不到。亮和灭的频率太高了
state = !state;
后加个延时试试
digitalWrite(pin, state);后面延时也行

james11 发表于 2013-1-5 15:56:01

楼主用的什么板子?是uno吗?uno的话上述代码,引发中断应是pin2具体可以看看这个说明:http://www.arduino.cc/en/Reference/AttachInterrupt

Ansifa 发表于 2013-1-5 18:06:47

楼上正解,
attachInterrupt(0, blink, CHANGE);是D2,
attachInterrupt(1, blink, CHANGE);才是D3

seuabb 发表于 2013-1-6 23:23:05

ttyp 发表于 2013-1-5 15:48 static/image/common/back.gif
实际是有效果的,不过灯还没灭,它又亮了,眼睛看不到。亮和灭的频率太高了
state = !state;
后加个延时试 ...

谢谢!是延时的问题,加了delay就能看到开关了。

seuabb 发表于 2013-1-6 23:27:45

Ansifa 发表于 2013-1-5 18:06 static/image/common/back.gif
楼上正解,
attachInterrupt(0, blink, CHANGE);是D2,
attachInterrupt(1, blink, CHANGE);才是D3

嗯。这个没弄错,是TXRX接下来的第一个脚。是延时的问题。
在blink里加了一句count++,在串口监视器里打出来,然后把5V电压引根线接到PIN2,断开,接上,发现数字有的时候重跳,有的时候不跳。
需要加电容在5V和PIN2之间吗?

seuabb 发表于 2013-1-6 23:28:58

james11 发表于 2013-1-5 15:56 static/image/common/back.gif
楼主用的什么板子?是uno吗?uno的话上述代码,引发中断应是pin2具体可以看看这个说明:http://www.arduino ...

也谢谢你!热情的版友真不少~~

Ansifa 发表于 2013-1-8 00:35:35

seuabb 发表于 2013-1-6 23:27 static/image/common/back.gif
嗯。这个没弄错,是TXRX接下来的第一个脚。是延时的问题。
在blink里加了一句count++,在串口监视器里打 ...

加电容就要顺便加一个拉电阻,可以防抖动
页: [1]
查看完整版本: 中断的例子