// калибровка на протяжении 5с while (millis () < 5000) { sensorValue = analogRead (sensorPin);
// установим максимальное значение if (sensorValue > sensorMax) { sensorMax = sensorValue; }
// установим минимальное значение if (sensorValue < sensorMin) { sensorMin = sensorValue; } }
Таким образом, любые дальнейшие показания могут быть сопоставлены в диапазоне между этим минимальным и максимальным:
// применим калибровку sensorValue = map (sensorValue, sensorMin, sensorMax, 0, 255);
Вот целая программа:
/ * Калибровка
Демонстрируется одна методика калибровки датчика.
Схема: * аналоговый датчик (потенциометр например): аналоговый вход 0 * светодиод: цифровой пин 9 и к земле
http://arduino.cc/en/Tutorial/Calibration
*/
// Эти константы не будут изменятся: const int sensorPin = A0; // вывод к которому подключен датчик const int ledPin = 9; // вывод к которому подключен светодиод
// переменные: int sensorValue = 0; // значение датчика int sensorMin = 1023; // минимальное значение датчика int sensorMax = 0; // максимальное значение датчика
void setup () { // подключаем светодиод как индикатор начала работы: pinMode (13, OUTPUT); digitalWrite (13, HIGH);
// калибровка на протяжении 5 с while (millis () < 5000) { sensorValue = analogRead (sensorPin);
// установим максимальное значение if (sensorValue > sensorMax) { sensorMax = sensorValue; }
// установим минимальное значение if (sensorValue < sensorMin) { sensorMin = sensorValue; } }
// выключим светодиод вконце digitalWrite (13, LOW); }
void loop () { // считываем информацию с датчика: sensorValue = analogRead (sensorPin);
// применяем калибровку sensorValue = map (sensorValue, sensorMin, sensorMax, 0, 255);
// если значение сенсора вышло за пределы калибровки sensorValue = constrain (sensorValue, 0, 255);
// включить светодиод по калибровочному значению: analogWrite (ledPin, sensorValue); }
|