1

代码似乎不起作用,但我也刚刚开始学习如何编写 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.
4

1 回答 1

1

那里有几个问题。

让我们从编译错误开始:

  1. 你有两个函数turnLeft和两个函数moveForward。我认为第二对应该是turnRightand moveBackwards
  2. moveForward您调用的函数中,servoRight(0)这可能应该是servoRight.write(0).

修复此问题应该允许您的代码编译,但它仍然无法正常工作:

  1. 您已经定义了引脚,但它们没有连接到伺服系统(没有调用attach)。
  2. 你提到了一个伺服和两个直流电机,那么为什么你的代码有三个伺服?(伺服三个引脚中只有一个连接到数字端口,另外两个用于电源)。
  3. 是什么delay,你想在那里做什么write(180)write(0)
  4. write(0.6) 不会将角度增加 0.6 度。您需要跟踪当前角度或read()servo.

简而言之,阅读一些教程(像这样),尝试并玩得开心。

于 2015-06-05T02:43:16.167 回答