用arduino代码控制两个直流电机和伺服

时间:2015-06-05 02:16:09

标签: arduino controls motordriver

代码似乎没有用,但我也刚开始学习如何编写arduino代码。我正在尝试运行两个直流电机和一个伺服作为机器人汽车的转向。我该怎么做才能让它运作起来。我所要做的就是使用两个电机驱动汽车前进,伺服系统为汽车提供方向。如何改进此代码?

    #include <Servo.h>


    int servoRightPin = 2;
    int servoLeftPin = 3;
    int servoDirPin = 4;
    Servo servoRight;
    Servo servoLeft;
    Servo servoDir;


    void turnLeft()
    {
    servoDir.write(0.6);
    delay(300000);
    servoLeft.write(180);
    servoRight.write(0);
    }

    void moveForward()
    {
    servoDir.write(0);
    delay(240000);
    servoLeft.write(180);
    servoRight(0);
    }

    void turnLeft()
    {
    servoDir.write(0.6);
    delay(300000);
    servoLeft.write(180);
    servoRight.write(0);
    }

    void moveForward()
    {
    servoDir.write(0);
    delay(240000);
    servoLeft.write(180);
    servoRight(0);
    }




    june_4_car.ino: In function 'void moveForward()':
    june_4_car.ino:25:15: error: no match for call to '(Servo) (int)'
    june_4_car.ino: In function 'void turnLeft()':
    june_4_car.ino:28:6: error: redefinition of 'void turnLeft()'
    june_4_car.ino:12:6: error: 'void turnLeft()' previously defined here
    june_4_car.ino: In function 'void moveForward()':
    june_4_car.ino:36:6: error: redefinition of 'void moveForward()'
    june_4_car.ino:20:6: error: 'void moveForward()' previously defined here
    june_4_car.ino:41:15: error: no match for call to '(Servo) (int)'
    Error compiling.

1 个答案:

答案 0 :(得分:1)

那里有几个问题。

让我们从编译错误开始:

  1. 您有两个函数turnLeft和两个函数moveForward。我假设第二对应该是turnRightmoveBackwards
  2. 在您致电moveForward的{​​{1}}功能中,这应该是servoRight(0)
  3. 修复此问题应该允许您的代码进行编译,但它仍然无效:

    1. 您已定义了引脚,但它们未附加到伺服器上(不会调用servoRight.write(0))。
    2. 您提到了一个伺服电机和两个直流电机,为什么您的代码有三个伺服电机? (只有一个伺服三个引脚连接到数字端口,另外两个用于供电)。
    3. 您对attachdelaywrite(180)的评价是什么?
    4. 写入(0.6)不会将角度增加0.6度。您需要跟踪当前角度,或write(0)。{/ li>跟踪read()

      简而言之,请阅读一些教程(like this),进行实验并享受乐趣。