Arrays 使用数组C++;
很抱歉打扰您,但是我在获取我的a马达阵列以在此代码中输出时遇到了问题Arrays 使用数组C++;,arrays,arduino,gpio,arduino-c++,Arrays,Arduino,Gpio,Arduino C++,很抱歉打扰您,但是我在获取我的a马达阵列以在此代码中输出时遇到了问题 // 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 th
// 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);
}
//初始化电机
//马达1
//intin1=4;
//int in2=2;
//马达2
//int-in3=8;
//int-in4=7;
//马达3
//int-in5=12;
//int-in6=13;
//马达4
//int in7=9;
//int-in8=10;
//PWM的阵列
int thisPin=0;
uint8_t pwms[]={3,5,6,11};
字节号PWMS=4;
//输出通道阵列
//电机1(4=高,2=低)
//电机2(8=高,7=低)
//电机3(12=高,13=低)
//电机4(9=高,10=低)
int-mtrpin=0;
uint8_t电机[]={4,2,8,7,12,13,9,10};
字节motorPin=8;
无效设置()
{
//pinMode(in1,输出);
//pinMode(in2,输出);
//引脚模式(in3,输出);
//pinMode(in4,输出);
//引脚模式(in5,输出);
//pinMode(in6,输出);
//pinMode(in7,输出);
//pinMode(in8,输出);
对于(pwmPin=0;pwmPin
我已经设法让最初的调用开始工作,但现在我正在将其全部转换为数组。
我已经设法让它为PWMs工作,但现在在添加马达阵列后,它已停止工作,并给出此错误消息
在函数“Void setup()”中;
41:8:错误:“pwmPin”未在此作用域中声明
42:11:错误:“mtrPin”未在此作用域中声明
在函数“void motorLoop()”中;
74:8:错误:“mtrPin”未在此作用域中声明
我知道错误可能很简单,但我找不到可以挽救我生命的方法
此外,for循环已经被调用,因为它们现在是独立的,我仍然得到相同的错误。
您可以在上看到此代码
在此方面的任何帮助都将不胜感激:)
正如编译器所说: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
把它分解成更小的部分。在编写代码时经常构建总是一个好主意,而不是先编写一堆代码然后再进行构建。编写一个函数,构建。向该函数添加更多代码,build。等等。检查变量的大小写。C++是区分大小写的(如错误所暗示的),在<代码> C++ +<代码>中没有<代码>字节<代码>类型(除了<代码> STD::Bux<代码> >代码> C++ 17 。您可能想使用
无符号字符
@rhahin-byte是非常感谢大家的标准类型。设法使它工作起来。从未想过检查值是否正确到case sentive:谢谢你的回答,我已经设法让它现在工作,因为它被证明是一个案件敏感的问题。谢谢你的反馈:D
int mtrPin; // this is a (uninitialized) declaration -> mtrPin can be used
int mtrPin { 0 }; // this is a (value) initialization -> mtrPin can be used