2017-08-29 18 views
-1

私は学校で私のプロジェクトにちょっとしたタイプの「メカニカルアーム」を作ろうとしています。Arduino:Servoは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つのボタンを使って爪を開き、もう1つのボタンでそれを閉じます。
  3. delay(250)を削除します。それは250mSのコードをすべて停止させます。私はあなたがコマンドを繰り返すことを止めようとしていると思うし、速すぎる切り替えは遅れを加えても機能しないだろう。まず2つのボタンを使用します。同じタイプの複数のコマンドが受信されても​​問題ありません。
関連する問題