使用数组C ++的问题

问题描述 投票:-1回答:1

很抱歉打扰您,但是在将我的电机阵列输出到此代码中时,我一直遇到问题。

// initialise motors

// Motor 1
//int in1 = 4;
//int in2 = 2 ;
// Motor 2
//int in3 = 8;
//int in4 = 7;
// Motor 3
//int in5 = 12;
//int in6 = 13;
// Motor 4
//int in7 = 9;
//int in8 = 10;

// Array of PWM's
int thisPin = 0;
uint8_t pwms[] = {3,5,6,11};
byte numberPwms = 4;

// Array for output channels
// Motor 1 (4 = High, 2 = Low)
// Motor 2 (8 = High, 7 = Low)
// Motor 3 (12 = High, 13 = Low)
// Motor 4 (9 = High, 10 = Low)
int mtrpin = 0;
uint8_t motors[] = {4,2,8,7,12,13,9,10};
byte motorPin = 8;

void setup()
{
//  pinMode(in1, OUTPUT);
//  pinMode(in2, OUTPUT);
//  pinMode(in3, OUTPUT);
//  pinMode(in4, OUTPUT);
//  pinMode(in5, OUTPUT);
//  pinMode(in6, OUTPUT);
//  pinMode(in7, OUTPUT);
//  pinMode(in8, OUTPUT);

  for (pwmPin = 0; pwmPin < numberPwms; pwmPin++){
      for (mtrPin = 0; mtrpin < motorPin; mtrPin++){
            pinMode(motors[mtrPin], OUTPUT);
        pinMode(pwms[pwmPin], OUTPUT);
        };
    }; 
}


void motorLoop(){
// setting the direction to turn and speed

//  digitalWrite(in1, HIGH); // Motor 2
//  digitalWrite(in2, LOW);  
//  digitalWrite(in3, HIGH); // Motor 2
//  digitalWrite(in4, LOW);  
//  digitalWrite(in5, HIGH); // Motor 3
//  digitalWrite(in6, LOW);
//  digitalWrite(in7, HIGH); // Motor 4
//  digitalWrite(in8, LOW);

// Set the speed for the Motors

  for(int pwmPin = 0; pwmPin < numberPwms; pwmPin++){
      for (mtrPin = 0; mtrpin < motorPin; mtrPin++){
            pinMode(motors[mtrPin], LOW);
        analogWrite(pwms[pwmPin], 200);
      };
   };  
};

void loop()
{
  motorLoop();
  delay(500);

}

我设法获得了最初的工作权,但现在我将其全部转换为数组。我设法使它适用于PWM,但现在在添加电动机阵列之后,它已停止工作并给出此错误消息。

在函数'Void setup()';41:8:错误:在此范围内未声明“ pwmPin”42:11:错误:在此范围内未声明“ mtrPin”在函数“ void motorLoop()”中;74:8:错误:未在此范围内声明'mtrPin'。

我知道错误可能真的很简单,但我找不到挽救生命的方法。

而且for循环已被调用,因为它们现在是分开的,我仍然遇到相同的错误。您可以在https://www.tinkercad.com/things/fFQKRTjhDrb-motor-initial-turn/editel看到此代码。

对此的任何帮助将不胜感激:)

arrays arduino gpio arduino-c++
1个回答
1
投票
In Function 'Void setup()'; 41:8: error: 'pwmPin' was not declared in this scope 42:11: error: 'mtrPin' was not declared in this scope In function 'void motorLoop()'; 74:8: error: 'mtrPin' was not declare in this scope.

正如编译器所说:mtrPin尚未声明,但您正在使用它。

声明在程序中引入名称,例如变量mtrPin的名称。其他示例是名称空间,函数和类。名称必须先声明,然后才能使用。您无法引用在代码中稍后声明的名称。

int mtrPin; // this is a (uninitialized) declaration -> mtrPin can be used
int mtrPin { 0 }; // this is a (value) initialization -> mtrPin can be used
© www.soinside.com 2019 - 2024. All rights reserved.