我制作了一个名为“ rudder.cpp”的类及其“ rudder.h”
我也有Arduino主要代码。

1)Arduino主要代码:调用舵类并移动舵机。

2)舵类:将舵机从0移到180。(从Sweep代码http://arduino.cc/en/Tutorial/Sweep复制粘贴)

3)rudder标头:包含rudder.cpp中的所有定义

我的问题是从Rudder类调用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
  }
}




#ifndef Rudder_h
#define Rudder_h

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

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

};

#endif

最佳答案

问题解决了!。它是有线的!我必须附加myServo.attach(9);每次调用moveRudder()时

因此,新代码为:

void Rudder::moveRudder()
{
   myServo.attach(9);             //Here the solution


    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
  }
}

关于c++ - 从我自己的库调用时,伺服没有 move 。 Arduino的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18160980/

10-13 07:09