Линейный буфер. Храним последовательные
значения.
Рассмотрим, как хранить в массиве,
например, 5 последних значений с датчика
для дальнейшего усреднения в среде
Arduino. Будем работать с линейным буфером,
перед записью нового элемента все
предыдущие сдвигаются влево, стирая
самый первый элемент, и освобождая место
для нового.
Для этого напишем 2 функции.
#define ARRAY_SIZE 5
byte bytes[ARRAY_SIZE];
void setup() {
Serial.begin(9600);
// 7 раз "задвинем" в массив случайное число
// и выведем в порт
for (byte i = 0; i < 7; i++) {
updateArray(random(0, 100));
printArray();
}
/*
Вывод:
0 0 0 0 7
0 0 0 7 49
0 0 7 49 73
0 7 49 73 58
7 49 73 58 30
49 73 58 30 72
73 58 30 72 44
*/
}
void updateArray(int newVal) {
for (byte i = 0; i < ARRAY_SIZE - 1; i++) {
// сдвигаем члены влево
bytes[i] = bytes[i + 1];
}
// пишем новое значение в последний элемент
bytes[ARRAY_SIZE - 1] = newVal;
}
void printArray() {
// выводим в порт
for (byte i = 0; i < ARRAY_SIZE; i++) {
Serial.print(bytes[i]);
Serial.print('\t');
}
Serial.println();
}
void loop() {}