среднее значение
- Войдите на сайт для отправки комментариев
Чт, 21/07/2022 - 16:10
Добрый день!
В программе для поиска среднего значения есть хитрость в этой строчке:
void loop() { // берем последнее значение... total= total - readings[index];
Без нее программа не работает. Не могу понять ее смысл. Не поможете на пальцах пояснить?
const int numReadings = 10; int readings[numReadings]; // данные, считанные с входного аналогового контакта int index = 0; // индекс для значения, которое считывается в данный момент int total = 0; // суммарное значение int average = 0; // среднее значение int inputPin = A0; void setup() { // инициализируем последовательную передачу данных с компьютером: Serial.begin(9600); // выставляем все считываемые значения на ноль: for (int thisReading = 0; thisReading < numReadings; thisReading++) readings[thisReading] = 0; } void loop() { // берем последнее значение... total= total - readings[index]; // ...которое было считано от сенсора: readings[index] = analogRead(inputPin); // добавляем его к общей сумме: total= total + readings[index]; // продвигаемся к следующему значению в массиве: index = index + 1; // если мы в конце массива... if (index >= numReadings) // ...возвращаемся к началу: index = 0; // вычисляем среднее значение: average = total / numReadings; // выводим его на компьютер цифрами в кодировке ASCII Serial.println(average); delay(1); // делаем задержку между считываниями – для стабильности программы }
Ну нужно просто разобраться , как работает данный алгоритм.
По факту есть массив со считанным значениями.
Он в цикле перезаписывается.
Самое старое значение заменяется новым.
В итоге после 10 измерении имеем на выходе среднее за последние 10 измерений.
В программе все понятно кроме этой строчки. Записываем в массив прочитанные значения, суммируем, потом делим на кол-во измерений. Но вот данная строчка не понятна. Но без нее не работает. Думаю кто-то проходил это.
В программе все понятно кроме этой строчки. Записываем в массив прочитанные значения, суммируем, потом делим на кол-во измерений. Но вот данная строчка не понятна. Но без нее не работает. Думаю кто-то проходил это.
Total - это сумма элементов массива. В этой строке из этой суммы отнимается значение текущего элемента массива, потом текущий элемент массива перезаписывается новым измерением, которое тут же плюсуется к Total. Грубо говоря, в сумме элементов массива одно старое значение заменяется новым. Немного заморочено, но в принципе прозрачно.
Да. Спасибо. Вроде понятно.
Она и с ней не работает.
Вернее, работает, но делает именно то, что в ней написано, а именно, считает цену на прошлогодний овёс.
Подсуньте её реальные данные, которые Вы можете перепроверить ручками и убедитесь, что никакого среднего она у Вас не считает.
Могу обсудить, но не в таком виде - вставьте код правильно, чтобы не приходилось писать: "в строке № ХЗ".
так вроде она прошлогодний овёс отнимает, не?
так вроде она прошлогодний овёс отнимает, не?
Вы не заметили моей ремарки:
Могу обсудить, но не в таком виде
так вроде она прошлогодний овёс отнимает, не?
Вы не заметили моей ремарки:
Могу обсудить, но не в таком виде
заметил, ждёмс ...