0

Arduino で文字列と int を組み合わせて変数をアドレス指定するにはどうすればよいでしょうか。同じ型でほぼ同じ名前の変数を多数使用しています。各変数に数字を追加するだけです。変数の名前は、たとえば int sensorValue_1; です。int センサー値_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 ループは避けたいと思います。私の場合、コードが複雑になりすぎます。
どうすればこれを管理できますか?

4

2 に答える 2

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));
}  
于 2013-07-29T18:05:01.470 に答える