极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10213|回复: 1

外部中断attachinterruput的使用问题

[复制链接]
发表于 2015-9-16 09:25:36 | 显示全部楼层 |阅读模式
大家好,刚接触arduino ,想用红外传感器获得中断信息,执行让两个舵机 同时动起来,大约动30度左右。
然后在同时回30度左右,回到初始位置。
求大神给我看看,我的第一个舵机,或者只用一个舵机的时候,就可以达到30度的来回转动一次。两个舵机同时时,只有第一个在执行语句,第二个不动。
首先不是动力不足的问题,用的电池,驱动板 可以驱动两个舵机。舵机是完好的,可以使用。
这是我的代码:
  1. #include <Servo.h>
  2. Servo firservo;       //定义舵机变量
  3. Servo twoservo;
  4. int firpos =126;         //舵机初始化60度
  5. int twopos =80;

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

  14.   pinMode(Signal,INPUT);
  15.   
  16.   attachInterrupt(1,duoji1,LOW);
  17. }

  18. void duoji1()
  19. {

  20.   firservo.write(156);
  21.   twoservo.write(110);
  22. }
  23. void loop()
  24. {
  25. //  if(firpos>=155)
  26. delay(1000);
  27.     firservo.write(126);
  28.     twoservo.write(80);
  29. delay(500);  
  30. }
复制代码

希望各位网友帮帮我啦。。
回复

使用道具 举报

发表于 2015-9-16 10:34:32 | 显示全部楼层
使用 interrupt 時, ISR 內不要放太複雜的程序, 不要把 ISR 看成是一般的程序吧.
盡可能只是更改變數的值, 然後在loop 之內執行相關拍令, 流程就會清楚得多.

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

你可以設定一個變數去記錄 interrupt 是否觸發了.
然後在 loop 之內, 根據該 變數去處理.
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 03:49 , Processed in 0.040014 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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