Линейный буфер. Храним последовательные значения.
Рассмотрим, как хранить в массиве, например, 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() {}
Работа с массивами Дата публикации 2 декабря , 2019