【问题标题】:Adressing variable using a string and an int in Arduino在 Arduino 中使用字符串和 int 寻址变量
【发布时间】:2013-07-29 11:03:31
【问题描述】:

我想知道如何在 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 循环。 就我而言,代码会变得过于复杂。
我该如何管理?

【问题讨论】:

    标签: variables int arduino


    【解决方案1】:

    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));
    }  
    

    【讨论】:

      【解决方案2】:

      您不需要使用A1A2 等来定义您要读取的模拟引脚。只需 1 或 2 个即可。

      void doSomething(int sensorIndex)
      {
            Serial.print("Sensor ");
            Serial.print(sensorIndex);
            Serial.print(": ");
            sensorValue = analogRead(sensorIndex);
            Serial.println(sensorValue);
      
            delay(1000);
      }  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-09
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多