Отчита непрестанно данните от аналогов вход, калкулира средната стойност и я подава на компютъра. Демонстрира употребата на масиви (arrays).
За този пример е необходим потенциометър свързан към аналогов входен пин 0.
Схема
Код
/* Izglajdane * ------------ * * Izglajda stojnosti kato izchislyava sredna stojnost na opredelen broj zamervaniya * * ot David A. Mellis (April 2007) * * bulgarski prevod ot Simeon Ianchev / Robotev.com (Septemvri 2009) */ /* opredelya broya na otchetenite stoinosti, koito shte se izglajdat kolkoto e po-golya broya tolkova po-izgladeni shte sa rezultatite obache i rezultata shte se generira po-bavno izpolzvaite #define za da zadadete goleminata na masiva ot otcheteni stojnosti */ #define NUMREADINGS 10 int readings[NUMREADINGS]; // promenliva za broya otchitaniya int index = 0; // promenliva za poreden nomer na poslednoto otchitane int total = 0; // promenliva za obshtiya broj otchitaniya int average = 0; // promenliva za srednata, izgladena stojnost int inputPin = 0; // pin za potenciometara void setup() { Serial.begin(9600); // zapochva serijna komunikaciya s kompyutara sas //skorost ot 9600 bita v sekunda for (int i = 0; i < NUMREADINGS; i++) readings[i] = 0; // nulira vsichki otcheteni stojnosti } void loop() { total -= readings[index]; // izvajda poslednata otchetena stojnost readings[index] = analogRead(inputPin); // otchita danni ot senzora... total += readings[index]; // ...pribavya gi kam sbora... index = (index + 1); // ...i preminava kam otchitane na sledvashta stojnost if (index >= NUMREADINGS) // v kraya na masiva... index = 0; // ...nulira average = total / NUMREADINGS; // izchislyava srednata stojnost Serial.println(average); // I ya izprashta kam kompyutera kato ASCII simvoli }