0543kangfei 发表于 2015-9-16 09:25:36

外部中断attachinterruput的使用问题

大家好,刚接触arduino ,想用红外传感器获得中断信息,执行让两个舵机 同时动起来,大约动30度左右。
然后在同时回30度左右,回到初始位置。
求大神给我看看,我的第一个舵机,或者只用一个舵机的时候,就可以达到30度的来回转动一次。两个舵机同时时,只有第一个在执行语句,第二个不动。
首先不是动力不足的问题,用的电池,驱动板 可以驱动两个舵机。舵机是完好的,可以使用。
这是我的代码:
#include <Servo.h>
Servo firservo;       //定义舵机变量
Servo twoservo;
int firpos =126;         //舵机初始化60度
int twopos =80;

int Signal=3;
void setup()
{
firservo.attach(5);//初始化使用第5个引脚
twoservo.attach(6);
firservo.write(firpos);//先让舵机回归80度中心点
   twoservo.write(twopos);
   

pinMode(Signal,INPUT);

attachInterrupt(1,duoji1,LOW);
}

void duoji1()
{

firservo.write(156);
twoservo.write(110);
}
void loop()
{
//if(firpos>=155)
delay(1000);
    firservo.write(126);
    twoservo.write(80);
delay(500);
}
希望各位网友帮帮我啦。。

Super169 发表于 2015-9-16 10:34:32

使用 interrupt 時, ISR 內不要放太複雜的程序, 不要把 ISR 看成是一般的程序吧.
盡可能只是更改變數的值, 然後在loop 之內執行相關拍令, 流程就會清楚得多.

以你的例子....loop 跟 TSR 同時會向 舵機發出指令, 實在太亂了.

你可以設定一個變數去記錄 interrupt 是否觸發了.
然後在 loop 之內, 根據該 變數去處理.
页: [1]
查看完整版本: 外部中断attachinterruput的使用问题