2

ここにはばかげたエラーがあると確信していますが、残念ながら、私の人生ではそれを解決することはできません!

エラーを取得する簡単なテスト プログラム:

#include <Servo.h> 

Servo myservo;

int testPIN = 13;
int inputPIN = 5;

void setup() 
{ 
  myservo.attach(8);
  pinMode(testPIN, OUTPUT);
  pinMode(inputPIN, INPUT);
} 

void loop() 
{ 
  if (digitalRead(inputPIN) == HIGH) 
  {
    digitalWrite(testPIN, HIGH);
    myservo.write(90);
  }
  else
  {    
    digitalWrite(testPIN, LOW);
    myservo.write(0);
  }
}

arduino のスイープの例 ( http://arduino.cc/en/Tutorial/Sweep ) が機能するので、エレクトロニクスが機能すると確信しています。

testPIN も期待どおりにオン/オフするため、if ステートメントは期待どおりに機能しています。

どんなアイデア/提案も歓迎します!

編集 - 申し訳ありませんが、エラーはサーボがまったく動かないことです

EDIT 2 - ここで少し奇妙なことが起こっています。スイープ ループをコピーして if 句に貼り付けると、サーボは期待どおりに反応します (つまり、入力 = 高の場合、サーボはスイープ ループを実行し、期待どおりに最後に到達するまで抜け出しません)。私の即時の考えでは、遅延が必要でしたが、遅延がどれだけ長くても、if/else 句のどこに追加されても、違いはないようです。

4

4 に答える 4

0

どの arduino ボードを使用しているかはわかりませんが、arduino uno では、ピン 8 がPWM出力ではないことは確かです。また、PWM 以外の出力でサーボを実行することはできません。

この Uno ボードの画像を見てください。ピン 8 にチルダ (ポートが PWM をサポートしていることを示す) がないことに注意してください。

Arduino Mega2560 ボード

于 2013-05-13T14:47:32.130 に答える
0

コメントで示唆されているように、サーボをゆっくり動かす関数を書きました。エレガントな解決策ではありませんが、サーボの応答時間は問題にならないので、うまくいきます。

すべてのヘルプと提案に感謝し、ラッパー関数の回避策については @praks411 に感謝します。

于 2013-05-14T19:50:54.277 に答える
0

リンクしているスイープ プログラムは、uno の PWM であるピン 9 を使用しています。コードはピン 8 を使用していますが、これは PWM 出力ではありません。サーボをピン 9 に切り替え、コードのアタッチをピン 9 に変更します。これが唯一の問題であると仮定すると、コードは機能するはずです。

于 2013-05-13T16:36:47.413 に答える