Как сохранить предыдущее значение в массиве - PullRequest
0 голосов
/ 14 мая 2018

Привет, ребята, я читаю входящие значения из аналогового вывода.И мне нужно сохранить предыдущие значения в массиве.

Код, который я использую:

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 ]

0 голосов
/ 14 мая 2018

вам нужно скопировать значения. Как упомянуто в комментарии, почему второе измерение 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)}

0 голосов
/ 14 мая 2018

Вы можете использовать этот код. Я попробовал это на симуляции, и это сработало хорошо. Вы можете увидеть изменения данных на последовательном мониторе. Функция 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...