Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何修复Arduino LED字符串控制器的代码?_C++_Arduino - Fatal编程技术网

C++ 如何修复Arduino LED字符串控制器的代码?

C++ 如何修复Arduino LED字符串控制器的代码?,c++,arduino,C++,Arduino,我得到: 数组下标的无效类型'int[int] 当我试图为我的Arduino和我的一生编译代码时,我不知道我做错了什么。 这是我的代码(尽管还没有完成,但可以随意使用) /* *更改日志0.5 *引脚[],引脚FV[],引脚V[],引脚延迟[]已移动 *到引脚[][] */ int模拟管脚[6]={A0,A1,A2,A3,A4,A5}; int pins[4][4]; int模式=0; 无效设置(){ int x=6; 做{ 引脚模式(模拟引脚[x],输入); x--; }而(x>0); int

我得到:
数组下标的无效类型'int[int]
当我试图为我的Arduino和我的一生编译代码时,我不知道我做错了什么。 这是我的代码(尽管还没有完成,但可以随意使用)

/*
*更改日志0.5
*引脚[],引脚FV[],引脚V[],引脚延迟[]已移动
*到引脚[][]
*/
int模拟管脚[6]={A0,A1,A2,A3,A4,A5};
int pins[4][4];
int模式=0;
无效设置(){
int x=6;
做{
引脚模式(模拟引脚[x],输入);
x--;
}而(x>0);
int引脚[4]={9,5,6,3};
x=4;
做{
引脚模式(引脚[0][x],输入);
x--;
}而(x>0);
x=4;
做{
引脚[1][x]=随机(5,10);
x--;
}而(x>0);
x=4;
做{
引脚[2][x]=随机(50,75);
x--;
}而(x>0);
x=4;
做{
引脚[3][x]=255;
x--;
}而(x>0);
//这是导致问题的部分
引脚[0][0]=8;
引脚[0][1]=9;
引脚[0][2]=10;
引脚[0][3]=11;
//端部
pinMode(8,输出);
连载《开始》(19200);
}
void readAnalogDecode(){
//平均值(pin);
//elseIf语句设置要使用的模式
//捕捉任何超出模式选择范围的内容
如果(模拟读数(A5)>800 | |模拟读数(A5)<0){
模式=0;
}
if(模拟读数(A5)>4和模拟读数(A5)<8){
模式=0;
}
if(模拟读数(A5)>8和模拟读数(A5)<15){
模式=1;
}
if(模拟读数(A5)>15和模拟读数(A5)<20){
模式=2;
}
如果(模拟读数(A5)>20和模拟读数(A5)<26){
模式=3;
}
if(模拟读数(A5)>26和模拟读数(A5)<47){
模式=4;
}
if(模拟读数(A5)>47和模拟读数(A5)<185){
模式=5;
}
if(模拟读数(A5)>185和模拟读数(A5)<345){
模式=6;
}
}
无效引脚音量控制器(int引脚,int值){
数字写入(8,低);
if(引脚[3][引脚]<值){
做{
引脚[3][pin]=引脚[3][pin]+引脚[1][pin];
如果(引脚[3][引脚]>255){
引脚[3][pin]=255;
}
串行打印LN(模拟读取(A5));
Serial.println(“”);
串行打印LN(模拟读取(A4));
模拟写入(引脚[0][pin],引脚[3][pin]);
数字写入(8,低);
延迟(引脚[2][引脚]);
}而(pins[3][pin]<值);
}
if(引脚[3][引脚]>值){
做{
引脚[3][pin]=引脚[3][pin]-引脚[1][pin];
如果(引脚[3][引脚]<0){
引脚[3][pin]=0;
}
数字写入(8,低);
模拟写入(引脚[0][pin],引脚[3][pin]);
延迟(引脚[2][引脚]);
}而(pins[3][pin]>值);
}
}
void循环(){
Serial.println(“”);
串行打印(模拟读取(A0));
连续打印(“”);
串行打印(模拟读取(A1));
连续打印(“”);
串行打印(模拟读取(A2));
连续打印(“”);
串行打印(模拟读取(A3));
连续打印(“”);
串行打印(模拟读取(A4));
连续打印(“”);
串行打印(模拟读取(A5));
连续打印(“”);
串行打印(模式);
readAnalogDecode();
如果(模式==0){
pinFader(1255);//没有绿色
pinFader(2255);//没有红色
pinFader(1,0);//绿色开启
pinFader(3255);//没有蓝色
pinFader(2,0);//红色打开
pinFader(1255);//没有绿色
pinFader(3,0);//蓝色开启
pinFader(1,0);//绿色开启
readAnalogDecode();}
如果(模式==1){
模拟写(9,0);
延迟(500);
模拟写(9255);
/*延迟(500);
模拟写入(10,0);
延迟(500);
模拟写入(10255);
延迟(500);
类比写(11,0);
延迟(500);
模拟写(11255);
*/延迟(500);
readAnalogDecode();
}
}
这不是给二维数组赋值的方法吗<代码>引脚[0][0]=8
如果问题与语法有关,我提前道歉。我习惯于java和python。

您有两个同名数组。在设置中,本地数组是指的数组,它不是二维数组,因此不能这样使用

在全球范围内:

int pins[4][4];
和内部设置:

int pins[4] = {9, 5, 6, 3};

试着给其中一个命名不同的名称。拥有两个同名的东西会让人非常困惑

您有两个同名数组。在设置中,本地数组是指的数组,它不是二维数组,因此不能这样使用

在全球范围内:

int pins[4][4];
和内部设置:

int pins[4] = {9, 5, 6, 3};

试着给其中一个命名不同的名称。拥有两个同名的东西会让人非常困惑

您有两个名为pins的数组。在全局范围内有一个二维数组。您可以使用另一个内部循环(4元素1D数组)对其进行阴影处理。当您提到设置内部的管脚时,它将指的是局部范围内的管脚,而不是全局范围外的2D阵列。一般来说,最好不要在同一范围内有两个同名的变量。这会让人困惑。在
setup()
中,您正在访问超出范围的数组。当数组有4个元素时,必须使用索引值3、2、1、0来访问元素,但使用4、3、2、1。我没有进一步阅读您的代码。您有两个名为pins的数组。在全局范围内有一个二维数组。您可以使用另一个内部循环(4元素1D数组)对其进行阴影处理。当您提到设置内部的管脚时,它将指的是局部范围内的管脚,而不是全局范围外的2D阵列。一般来说,最好不要在同一范围内有两个同名的变量。这会让人困惑。在
setup()
中,您正在访问超出范围的数组。当数组有4个元素时,必须使用索引值3、2、1、0来访问元素,但使用4、3、2、1。我没有进一步阅读你的代码。现在我觉得自己很傻。结果是我错过了一行需要删除的内容。谢谢你,很抱歉犯了这么简单的错误。通常,2D数组是错误的。或者至少是一个有问题的设计。通常,行与列非常不同,因此您可以处理列数组或一个或多个行(一维),但不能处理非结构化二维数组