代码之家  ›  专栏  ›  技术社区  ›  Franta123456

如何将以前的值存储到数组中

  •  -3
  • Franta123456  · 技术社区  · 7 年前

    大家好,我正在读取来自模拟引脚的输入值。我需要将以前的值存储到数组中。

    我正在使用的代码:

    int u = A0;
    int y = A1;
    float z[4][1] = {{0},      
                    {0}, 
                    {0},     
                    {0}};
    
    void setup() {
      Serial.begin(9600);
      pinMode(u, INPUT);
      pinMode(y, INPUT);
    }
    
    void loop() {
        u = analogRead(A0);
        y = analogRead(A1);
    }
    

    我该怎么做?

    z[4][1] = {{u(n-1)},      
               {u(n-2)}, 
               {y(n-1)},     
               {y(n-1)}};
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Batuhan Orhan    7 年前

    您可以使用此代码。我在模拟上试过这个,效果很好。您可以在串行监视器上看到数据更改。storeValues()函数执行您想要的操作。您需要先在循环函数中调用它。

    int firsPin = A0;
    int secondPin = A1;
    int u = 0, y = 0, lastU = 0, lastY = 0;
    
    //0 : u(n-1) 1 : u(n-2) 2 : y(n-1) 3 : y(n-2) 
    int z[] = {0, 0, 0, 0};
    
    void setup() {
      Serial.begin(9600);
      pinMode(firsPin, INPUT);
      pinMode(secondPin, INPUT);
    }
    
    void loop() {
      storeValues();
      u = analogRead(firsPin);
      y = analogRead(secondPin);    
      Serial.println("u: " + String(u));
      Serial.println("y: " + String(y));
      Serial.println("u(n-1): " + String(z[0]));
      Serial.println("y(n-1): " + String(z[2]));
      Serial.println("u(n-2): " + String(z[1]));
      Serial.println("y(n-2): " + String(z[3]));
      delay(100);
    }
    
    void storeValues() {
      z[1] = z[0];
      z[3] = z[2];
      z[0] = u;
      z[2] = y;
    }
    
        2
  •  0
  •   davy gillebert    7 年前

    您需要复制这些值。正如评论中提到的,为什么第二维度是1?我把那个漏掉了。

    我通常是这样做的:

     z[1] = z[0];
     z[0] = u;
     z[3] = z[2];
     z[2] = y;
    

    这将把前面的值转换为矩阵的另一个值,以将其放入代码中:

    int pinU = A0;
    int pinY = A1;
    int u = 0;
    int y = 0;
    float z[4] = {0,0,0,0}
    
    void setup() {
       Serial.begin(9600);
       pinMode(pinU, INPUT);
       pinMode(pinY, INPUT);
    }
    
    void loop() {
        u = analogRead(A0);
        y = analogRead(A1);
        z[1] = z[0];
        z[0] = u;
        z[3] = z[2];
        z[2] = y;
    
    } 
    

    这将有效地使z={u(n),u(n-1),y(n),y(n-1)}