​Линейный буфер. Храним последовательные значения.

Линейный буфер. Храним последовательные значения.

Рассмотрим, как хранить в массиве, например, 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

Cлучайные товары

Посмотреть товар в Магазине »

Мы в соц сетях

Подпишись на канал Telegram

Portal-PK (Портал ПК) © 2015 - 2024
Разработка проектов
AT Block
DWIN Box