极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16065|回复: 3

nano外部中断输入不稳定

[复制链接]
发表于 2011-12-1 14:07:22 | 显示全部楼层 |阅读模式
我是 Arduino的初学者请教大家一个问题:
思路:想通过nano控制两个舵机,其中一个舵机做云台实现180度旋转,另外一个舵机实现固定角度的转动;在外部电平触发下云台舵机停止转动另一个舵机完成固定角度转动后云台舵机能在之前停止的位置上继续转动,如此往复;
电路连接:占用nano 0号中断做触发信号
程序:
  1. #include <Servo.h>
  2. int angle_round;
  3. Servo servo_round;

  4. int angle_shoot;
  5. Servo servo_shoot;
  6. int switchPin = 2;


  7. void setup()
  8. {  
  9.   pinMode(switchPin, INPUT);
  10.   attachInterrupt(0, shoot, RISING );
  11.   servo_round.attach(4);//舵機一接pin4,nanoD4 pin;
  12.   servo_shoot.attach(5);
  13. }

  14. void loop()
  15. {
  16.   digitalWrite(switchPin, HIGH);
  17.   for (angle_round=0;angle_round<=180;angle_round++)
  18.   {
  19.     servo_round.write(angle_round);
  20.     delay(800);
  21.   }
  22. }

  23. void shoot()
  24. {
  25.   for (angle_shoot=0;angle_shoot<=180;angle_shoot++)
  26.   {
  27.     servo_shoot.write(angle_shoot);
  28.     delay(800);
  29.   }
  30. }
复制代码
遇到问题:外部触发信号目前用杜邦线连VCC和GND来实现触发;面临问题中断程序不稳定:不能进入中断、不能退出中断、多次中断;请各位前辈指教在nano上如何稳定应用外部中断,包括软件和硬件两个方面,请指教,将不胜感激!
回复

使用道具 举报

发表于 2011-12-1 16:13:34 | 显示全部楼层
这种外部中断不是很好用,容易受干扰。

研究下程序逻辑,看看能不能不用中断。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-1 17:39:45 | 显示全部楼层
不用外部中断很难让云台停留在之前的位置,舵机要回到零位的;
回复 支持 反对

使用道具 举报

发表于 2011-12-1 20:05:42 | 显示全部楼层
只要涉及到舵机的控制的控制统。
如果不严格考虑成本或者空间或者重量或者能耗。
建议单独给舵机配置控制芯片。
这样的好处是,舵机在运行的时候不会反过来干扰arduino的运行。
毕竟,虽然mega的pwm输出号称是独立输出,不会占用系统运行节拍。
但是,在实践上,它并非如此。。。。。
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 20:59 , Processed in 0.043705 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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