控制两个直流电动机和伺服与Arduino的代码(controlling two dc motors

2019-10-23 06:53发布

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

Answer 1:

几个问题存在。

让我们先从编译错误:

  1. 你有两个功能turnLeft和两个功能moveForward 。 我认为第二对应该turnRightmoveBackwards
  2. moveForward函数调用servoRight(0)这也许应该是servoRight.write(0)

要解决这个应该让你的代码编译,但它仍然无法正常工作:

  1. 您已经定义针脚,但它们没有连接到伺服系统(没有呼叫到attach )。
  2. 你提到一个伺服和两个直流电动机所以为什么你的代码有三个舵机? (只有伺服三个销中的一个连接到数字端口的另两个用于功率)。
  3. 用什么delaywrite(180)write(0)什么是你想在那里做?
  4. 写(0.6)是不会由0.6度,以增加的角度。 您需要可以跟踪当前角度或read()它从servo

总之看了一些教程( 像这样 ),实验和乐趣。



文章来源: controlling two dc motors and servo with arduino code