Помогите в работе с массивом, пожалуйста!

silkyre6xtenz
Offline
Зарегистрирован: 24.04.2016

Здравствуйте! Прошу не камнями бросаться, но помочь. Мне нужно, чтобы с моего датчика излучения считывались значения и заносились в массив, а потом вычислять среднее значение за некоторое n - число измерений. Но дело в том, что я тотальный новичок как в программировании вообще, так и в ардуино в частности. Потом из массива должно высчитываться среднее значение и выводиться на экран. С выводом на экран и связью с датчиком я осилил, но как работать с массивом 0 не представляю вообще. Мне нужно опрашивать датчик, скажем, с переодичностью в 0,1 сек и заносить данные в массив из 10 элементов, а после высчитывать среднее. При этом очень желательно, чтобы масив работал по принципу удалению самого старого элемента и добавлнием новго вместо него. Даже примерно не представляю, как такое реализовать. Помогите, пожалуйста!

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Метод плавающего кадра или плавающего среднего без использования массива, как мне кажется, вполне подойдёт для вашей задачи. Впервом случае в некоторой переменной аккумуляторе накаливается сумма из N измерений - кадр, по завершению накопления кадра, вычисляется среднее значение кадра и аккумулятор обнуляется для накопления суммы следующего кадра. Во втором случае нет необходимости держать счётчик измерений кадра. При добавлении нового элемента из аккумулятора вычитается его среднее значение и добавляется новое.

А с массивами всё просто: посмотрите на описание array. Не набудьте одну особенность С - массивы всегда начинаются с нуля.

silkyre6xtenz
Offline
Зарегистрирован: 24.04.2016

Боюсь, этот метод не подойдет. Все это используется для пирометра, и планируется сделать так, что на дисплее будет показываться максимальное, минимальное и среднее значение. Причем данные должны динамически обновляться. А ведь в массиве сравнительно легко провернуть выделение максимума и минимума...

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Издеваеетесь? :) Каждое вновь поступившее значение сравниваем с переменной, хранящей минимум, если новое значение меньше, пишаем его в переменную минимума, аналогично с максимумом, потом новое значение добавляем к аккумулятору кадра. 3 слова в памяти, три проверки. :)

silkyre6xtenz
Offline
Зарегистрирован: 24.04.2016

а как организовать опрос датика, скажем, раз в 0,1 сек?

 

faeton
faeton аватар
Offline
Зарегистрирован: 21.03.2016

Если по-детски, то между опросами, в основной цикл поставить delay(100), чуть сложнее проверять премя, немного сложнее - по прерыванию таймера.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Ещё можно ознакомиться с Блинком без делай. Тоже помогает опрашивать раз в 100 мсек. :)