Arduino:Servo"没有工作" IR

时间:2017-08-29 03:44:04

标签: arduino arduino-uno

我试图制造一种类型的机械臂"我在学校的项目。

我的问题是:当爪子得到什么东西时伺服停止并且IR变得疯狂。我尝试了所有我知道但没有任何工作,项目进展得很晚......

这与我的项目类似,但我没有盾牌:

enter image description here

#include <IRremote.h> 
#include <Servo.h>

#define rec A1 
#define claw 5

Servo g;    
bool i = false;
IRrecv irrecv(rec);
decode_results results;

void setup() {
  Serial.begin(9600);
  g.attach(claw);
  g.write(25);
  irrecv.enableIRIn(); 
}

void loop(){
  if(irrecv.decode(&results)){
    delay(250); 
    Serial.println(results.value);
    if(results.value == 551522925) {
      i = !i;
      change(i);
    }
  }
}

void change(bool i) {
  switch (i) {
    case false:
      g.write(0);
      break;
    case true:
      g.write(25);
      break;
    }
}

2 个答案:

答案 0 :(得分:0)

  

当爪子发出咔哒声时,伺服停止,IR变得疯狂。

很可能这是一个电源问题,从不同于Arduino电源的电源供应伺服电机,并确保它具有足够的额定电流。

答案 1 :(得分:0)

  1. 您需要将伺服电机直接连接到电池/电源。爱好舵机需要4.5-6伏特。
  2. 通过尝试切换,您使代码变得复杂。首先使用1按钮打开爪子,然后使用另一个按钮将其关闭。
  3. 删除delay(250)。这将使所有代码停止250mS。我想你试图阻止命令重复和切换太快,但添加延迟是行不通的。首先使用2个按钮。然后,如果收到多个相同类型的命令并不重要。