2017-08-29 83 views
-1

我正试图在学校为我的项目制作一种“机械臂”。Arduino:伺服器与IR无法“工作”

我的问题是:当爪子得到的东西伺服停止和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; 
    } 
} 

回答

0

当爪子得到的东西伺服停止和IR发疯。

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

0
  1. 您需要将舵机直接上电到电池/电源。爱好舵机需要4.5-6伏。
  2. 通过尝试切换您正在复杂的代码。先用1个按钮打开爪子,再用另一个按钮关闭它。
  3. 删除delay(250)。这将停止所有代码死亡250毫秒。我想你正试图阻止命令重复和切换太快,但增加延迟不起作用。首先使用2个按钮。那么接收到多个相同类型的命令并不重要。