「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