首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从我自己的图书馆打电话时,伺服系统没有移动。阿杜伊诺

从我自己的图书馆打电话时,伺服系统没有移动。阿杜伊诺
EN

Stack Overflow用户
提问于 2013-08-10 10:25:00
回答 1查看 1.1K关注 0票数 1

我创建了一个名为"rudder.cpp“的类,它的”舵.h“也有Arduino主代码。

1) Arduino主代码:调用舵类并移动伺服。

2)舵级:将伺服从0移动到180。(从扫描代码http://arduino.cc/en/Tutorial/Sweep复制粘贴)

3)舵头:这保存了rudder.cpp中的所有定义

我的问题是,当从舵类调用move方法时,这只是从扫描中复制粘贴代码,并且我已经确保它在使用之前工作正常,

我注意到正在发生一种不好的行为。

1)伺服变热了,伺服抖动,不像扫描那样平稳地运动

代码快照:

Arduino主文件

代码语言:javascript
复制
#include <Servo.h>
Rudder rudder = Rudder();
void setup() 
{ 

}

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

Rudder.cpp文件:

代码语言:javascript
复制
#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 
  } 
}

Rudder.h

代码语言:javascript
复制
#ifndef Rudder_h
#define Rudder_h

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

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

};

#endif
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-10 10:50:23

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

所以新的代码是:

代码语言:javascript
复制
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 
  } 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18160980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档