Този пример демонстрира как се калибрира сензор. Данните отчетени от сензора в първите пет секунди след като проргамата е стартирана обуславят максималната и минимална допустими стойности.
За този пример е нужен аналогов сензор (например потенциометър или фоторезистор) свързан към аналогов входен пин 2 и светотиод към дигитален пин 9. Контролен светодиод е свързан към дигитален пин 13.
Схема
Код
/* Kalibrovka * ------------ * * kalibrova dannite ot senzor * * ot David A. Mellis (Oktomvri 2008) * * podobrena ot Tom Igoe (Juni 2009) * * bulgarski prevod ot Simeon Ianchev / Robotev.com (Septemvri 2009) */ int sensorPin = A0; // pin za senzora int ledPin = 9; // pin za svetodioda int val = 0; // promenliva za stojnostite ot senzora int sensorMin = 1023, sensorMax = 0; // promenlivi za otchitane na //nai-golyamata i nai-malkata stojnosti v perioda za kalibrirane void setup() { // signal za nachalo na kalibriraneto; deklarira kato izhod i vklyuchva pin 13 pinMode(13, OUTPUT); digitalWrite(13, HIGH); // kalibrovka v pyrvite 5 sekundi while (millis() < 5000) { val = analogRead(sensorPin); // zapazva nai-vosokata otchetena stojnost if (val > sensorMax) { sensorMax = val; } // zapazva nai-vosokata otchetena stojnost if (val < sensorMin) { sensorMin = val; } } // signal za krai na kalibriraneto - izklyuchva pin 13 digitalWrite(13, LOW); } void loop() { val = analogRead(sensorPin); // kalibrova dannite ot senzora val = map(val, sensorMin, sensorMax, 0, 255); // ogranichava stojnostite mejdu 0 i 255 v sluchai che // sa bili izvan tozi obhvat po vreme na kalibriraneto val = constrain(val, 0, 255); analogWrite(ledPin, val); }