我想知道如何通过在Arduino中组合一个字符串和一个int 来来解决变量。 我使用了许多相同类型和几乎相同名称的变量。我只是在每个变量上附加一个数字。 变量的名称例如是int sensorValue_1; int sensorValue_2;等等。 我想少写,因为我的代码变得太长了。 在解决变量时,我想写下这样的东西:sensorValue_ [+ intVariable] ;
这是我的意思的一个例子:
int sensorIndex_1 = 1;
int sensorIndex_2 = 2;
int sensorIndex_3 = 3;
int sensorValue_1;
int sensorValue_2;
int sensorValue_3;
void setup()
{
Serial.begin(9600);
}
void loop()
{
doSomething(sensorIndex_1);
//doSomething(sensorIndex_2);
//doSomething(sensorIndex_3);
}
void doSomething(int sensorIndex)
{
if(sensorIndex == 1)
{
Serial.print("Sensor 1: ");
sensorValue_1 = analogRead(A1);
Serial.println(sensorValue_1);
}
if(sensorIndex == 2)
{
Serial.print("Sensor 2: ");
sensorValue_2 = analogRead(A2);
Serial.println(sensorValue_2);
}
if(sensorIndex == 3)
{
Serial.print("Sensor 3: ");
sensorValue_3 = analogRead(A3);
Serial.println(sensorValue_3);
}
delay(1000);
}
我想缩短doSomething()方法中的代码。 我想要这样的东西: 请注意“ [+ sensorIndex] ”
void doSomething(int sensorIndex)
{
Serial.print("Sensor [+ sensorIndex]: ");
sensorValue_[+ sensorIndex] = analogRead(A[+ sensorIndex]);
Serial.println(sensorValue_[+ sensorIndex]);
delay(1000);
}
顺便说一句:如果可能的话,我想避免使用for循环。 就我而言,代码会变得太复杂 我该如何管理?
答案 0 :(得分:2)
User2461391有一个很好的开始,但我认为你想要的其余部分是:
int array1[3];
int array2[3];
int arrayx[3];
void setup()
{
}
void loop()
{
int index=1;
array1[2]=doSomething(2);
arrayx[index]=doSomething(index);
Serial.print("Sensor ");
Serial.print(index);
Serial.print(": ");
Serial.println(arrayx[index]);
while(1);
}
int doSomething(int sensorIndex) // It probably makes more sense to return the value
{
return (analogRead(sensorIndex));
}
答案 1 :(得分:1)
您无需使用A1
和A2
等来定义您想要阅读的模拟引脚。只需1或2就可以了。
void doSomething(int sensorIndex)
{
Serial.print("Sensor ");
Serial.print(sensorIndex);
Serial.print(": ");
sensorValue = analogRead(sensorIndex);
Serial.println(sensorValue);
delay(1000);
}