Arduino1:中断知识点汇总

code:
int pbIn=0;
int ledout=A0;
volatile int state=LOW;
void setup() {
pinMode(ledout,OUTPUT);
attachInterrupt(pbIn,stateChange,CHANGE);//监视中断输入引脚变化  
}
void loop() {
  for(int i=0;i<100;i++)
  {
    delay(10);
    }
}//模拟长时间的中断
void stateChange()
{
  state=!state;
  digitalWrite(ledout,state);
  }

中断命令语法介绍
attachInterrupt(interrupt, function, mode)

interrupt:中断引脚数
function:中断发生时调用的函数,此函数必须不带参数和不返回任何值。该函数有时被称为中断服务程序。eg:stateChange~
mode:定义何时发生中断以下四个contstants预定有效值:

LOW 当引脚为低电平时,触发中断
CHANGE 当引脚电平发生改变时,触发中断
RISING 当引脚由低电平变为高电平时,触发中断
FALLING 当引脚由高电平变为低电平时,触发中断.

注意事项:
1、当中断函数发生时,delya()和millis()的数值将不会继续变化。当中断发生时,串口收到的数据可能会丢失。你应该声明一个变量来在未发生中断时储存变量。


code:
void loop()
{
val=digitalRead(BUTTON);
if((val==HIGH)&&(old_val==LOW))
{
state=1-state;
startTime=millis();
delay(10);
}
if((val==HIGH)&&(old_val==HIGH))
{
if(state==1&&(millis()-startTime)>500)
{
brightness++;
delay(10);
//了解millis()的用法。

2、中断可以再任何时候通过attachInterrupt()命令进行改变。当重新使用attachInterrupt()时,先前分配的中断就会从对应引脚上移除。
3、Arduino也可以忽略所有中断。如果你需要在一段代码中不执行中断,只需要执行 noInterrupts()命令。当这段代码执行完以后,你可以使用 interrupts()命令重新启用中断。
4、 终端也可以通过detachInterrupt(interrupt_number)命令进行删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值