1

「rudder.cpp」というクラスとその「rudder.h」を作成しました。Arduinoのメインコードもあります。

1) Arduino メイン コード: ラダー クラスを呼び出し、サーボを動かします。

2) ラダー クラス: サーボを 0 から 180 に移動します。 (スイープ コードhttp://arduino.cc/en/Tutorial/Sweepからコピー ペースト)

3) 舵ヘッダー: これは rudder.cpp のすべての定義を保持します

私の問題は、ラダー クラスから move メソッドを呼び出すときです。これは、スイープからの単なるコピー ペースト コードであり、使用する前に正しく動作することを確認しました。

悪い行動が起こっていることに気づきました。

1) サーボが熱くなっている 2) サーボが揺れてスイープなどスムーズに動かない

コードのスナップショット:

Arduinoメインファイル

#include <Servo.h>
Rudder rudder = Rudder();
void setup() 
{ 

}

void loop() 
{ 
    rudder.moveRudder();
}

Rudder.cpp ファイル:

#include "Rudder.h"
#include <Rudder.h>
#include <Servo.h>

Servo myServo;

Rudder::Rudder()
{
       myServo.attach(9);
}

// Sweep code!
//
void Rudder::moveRudder()
{
    for(pos = 0; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees 
  {                                  // in steps of 1 degree 
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
  for(pos = 180; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees 
  {                                
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
}

舵.h

#ifndef Rudder_h
#define Rudder_h

#include "Arduino.h"
#include <Servo.h>

class Rudder
{
   Public:
   Rudder();
   moveRudder();
   private:
   Servo myServo;

};

#endif
4

1 に答える 1