极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11045|回复: 7

中断的例子

[复制链接]
发表于 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?
回复

使用道具 举报

发表于 2013-1-5 15:48:26 | 显示全部楼层
实际是有效果的,不过灯还没灭,它又亮了,眼睛看不到。亮和灭的频率太高了
state = !state;
后加个延时试试
digitalWrite(pin, state);后面延时也行
回复 支持 反对

使用道具 举报

发表于 2013-1-5 15:56:01 | 显示全部楼层
楼主用的什么板子?是uno吗?uno的话上述代码,引发中断应是pin2具体可以看看这个说明:http://www.arduino.cc/en/Reference/AttachInterrupt
回复 支持 反对

使用道具 举报

发表于 2013-1-5 18:06:47 | 显示全部楼层
楼上正解,
attachInterrupt(0, blink, CHANGE);是D2,
attachInterrupt(1, blink, CHANGE);才是D3
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-6 23:23:05 | 显示全部楼层
ttyp 发表于 2013-1-5 15:48
实际是有效果的,不过灯还没灭,它又亮了,眼睛看不到。亮和灭的频率太高了
state = !state;
后加个延时试 ...

谢谢!是延时的问题,加了delay就能看到开关了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-6 23:27:45 | 显示全部楼层
Ansifa 发表于 2013-1-5 18:06
楼上正解,
attachInterrupt(0, blink, CHANGE);是D2,
attachInterrupt(1, blink, CHANGE);才是D3

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

使用道具 举报

 楼主| 发表于 2013-1-6 23:28:58 | 显示全部楼层
james11 发表于 2013-1-5 15:56
楼主用的什么板子?是uno吗?uno的话上述代码,引发中断应是pin2具体可以看看这个说明:http://www.arduino ...

也谢谢你!热情的版友真不少~~
回复 支持 反对

使用道具 举报

发表于 2013-1-8 00:35:35 | 显示全部楼层
seuabb 发表于 2013-1-6 23:27
嗯。这个没弄错,是TXRX接下来的第一个脚。是延时的问题。
在blink里加了一句count++,在串口监视器里打 ...

加电容就要顺便加一个拉电阻,可以防抖动
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-22 03:36 , Processed in 0.044153 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表