大家好,我正在从模拟引脚读取输入值。我需要将以前的值存储到数组中。
我正在使用的代码:
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)}};
答案 0 :(得分:1)
您可以使用此代码。我在模拟上试过这个并且效果很好。您可以在串行监视器上查看数据更改。 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;
}
答案 1 :(得分:0)
您需要复制这些值。如评论中所述,为什么第二个维度为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)}