Arduino电机的速度和方向

时间:2017-04-09 18:06:29

标签: performance bluetooth arduino

我想制作一个程序来控制我的Arduino蓝牙车 我在所需的方向和所需的速度上遇到很多麻烦。到目前为止,我试过这个,但由于某种原因,它无法正常工作:

int motor1clock = 7, motor1clockc = 8, pwm1 = 3, pwm2 = 9, motor2clock = 10, motor2clocko = 16, speed;
String inputString = "", junk;

void setup()
{
    pinMode(motor1clock, OUTPUT);
    pinMode(motor1clockc, OUTPUT);
    pinMode(pwm1, OUTPUT);
    pinMode(motor2clocko, OUTPUT);
    pinMode(motor2clock, OUTPUT);
    pinMode(pwm2, OUTPUT);
    Serial1.begin(9600);
}
void Forwards(int spee)
{
    analogWrite(pwm2, spee);
    analogWrite(pwm1, spee);
    digitalWrite(motor1clock, LOW);
    digitalWrite(motor1clockc, HIGH);
    digitalWrite(motor2clocko, HIGH);
    digitalWrite(motor2clock, LOW);
}
void Backwards(int spee)
{
    analogWrite(pwm2, spee);
    analogWrite(pwm1, spee);
    digitalWrite(motor1clock, HIGH);
    digitalWrite(motor1clockc, LOW);
    digitalWrite(motor2clocko, LOW);
    digitalWrite(motor2clock, HIGH);
}
void Steer_Left(int spee)
{
    analogWrite(pwm2, spee - 20);
    analogWrite(pwm1, spee);
    digitalWrite(motor1clock, LOW);
    digitalWrite(motor1clockc, HIGH);
    digitalWrite(motor2clocko, LOW);
    digitalWrite(motor2clock, HIGH);
}
void Steer_Right(int spee)
{
    analogWrite(pwm2, spee);
    analogWrite(pwm1, spee - 20);
    digitalWrite(motor1clock, HIGH);
    digitalWrite(motor1clockc, LOW);
    digitalWrite(motor2clocko, HIGH);
    digitalWrite(motor2clock, LOW);
}
void loop()
{
    if (Serial1.available() > 0) {
        String str = Serial1.readString();
        char inChar[3];
        str.toCharArray(inChar, 3);

        while (Serial1.available() > 0) {
            junk = Serial1.readString();
        }
        int num = atoi(&inChar[1]);
        speed = num;
        Serial1.println(speed);
        if (inChar[0] == 'A') {
            Serial1.println(inChar[0]);
            Forwards(speed);
        }

        if (inChar[0] == 'B') {

            Backwards(speed);
        }

        if (inChar[0] == 'C') {
            Steer_Left(speed);
        }

        if (inChar[0] == 'D') {

            Steer_Right(speed);
        }
        if (inChar[0] != 'A' || inChar[0] != 'B' || inChar[0] != 'C' || inChar[0] != 'D') {
            digitalWrite(motor1clock, LOW);
            digitalWrite(motor1clockc, LOW);
            digitalWrite(motor2clocko, LOW);
            digitalWrite(motor2clock, LOW);
        }
        inputString = "";
    }
}

输入代码格式为"命令速度",例如:" A255"。

1 个答案:

答案 0 :(得分:0)

字符串“A255”中有超过3个字节,因此我建议您定义inChar [6]。 并且,做了“Serial1.println(速度);”打印所需的速度?