Ошибка «функция не была объявлена ​​в этой области» при объявлении функции в Arduino - PullRequest
0 голосов
/ 14 января 2019

Я написал функцию для управления двигателями постоянного тока в моем проекте, но продолжаю получать эту ошибку, когда я компилирую свой код.

error: 'mPower' was not declared in this scope
   mPower(leftSpeed, rightSpeed);
error: a function-definition is not allowed here before '{' token
   void mPower(int m1, int m2){
error: expected '}' at end of input
 }
mPower' was not declared in this scope

Я пытался определить и объявить функцию перед ее вызовом.

void loop() {

mPower(leftSpeed, rightSpeed);

// motor functionings
  void mPower(int m1, int m2){
    // Left Motor
    if(m1 > 0){ //left motor move foward
      digitalWrite(IN1,HIGH);
      digitalWrite(IN2,LOW);
    }else{ ////left motor move backward
      digitalWrite(IN1,LOW);
      digitalWrite(IN2,HIGH );
      m1 = m1*-1; //convert m1 into positive value
    }
    analogWrite(ENA,m1); //set pwm value according to m1

    //Right Motor
    if(m2 > 0){   //right motor move foward
      digitalWrite(IN3,HIGH);
      digitalWrite(IN4,LOW);
    }else{        //right motor move backward
      digitalWrite(IN3,LOW);
      digitalWrite(IN4,HIGH );
      m2 = m2*-1; //convert m2 into positive value
    }
    analogWrite(ENB,m2); //set pwm value according to m2

  }
}

Что не так с моим кодом?

1 Ответ

0 голосов
/ 14 января 2019

Вам нужно объявить функцию mPower вне вашего loop:

// motor functionings
void mPower(int m1, int m2){
    // Left Motor
    if(m1 > 0){ //left motor move foward
        digitalWrite(IN1,HIGH);
        digitalWrite(IN2,LOW);
    }else{ ////left motor move backward
        digitalWrite(IN1,LOW);
        digitalWrite(IN2,HIGH );
        m1 = m1*-1; //convert m1 into positive value
    }
    analogWrite(ENA,m1); //set pwm value according to m1

    //Right Motor
    if(m2 > 0){   //right motor move foward
        digitalWrite(IN3,HIGH);
        digitalWrite(IN4,LOW);
    }else{        //right motor move backward
        digitalWrite(IN3,LOW);
        digitalWrite(IN4,HIGH );
        m2 = m2*-1; //convert m2 into positive value
    }
    analogWrite(ENB,m2); //set pwm value according to m2

}

void loop() {
    mPower(leftSpeed, rightSpeed);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...