Подскажите,как мне перевести получаемые измерения в сантиметры.Использую заказанную в вашем магазине модель дальномера - http://amperka.ru/collection/Sensory/product/Infrakrasnyy-dalnomer , заранее благодарю
Зависимость расстояния от сигнала приведена в даташите на сенсор. Для аппроксимации кривой можно использовать формулу, приведённую в статье на robotshop: D = (A + B×X) / (1 + C×X + D×X^2), где: D — расстояние в сантиметрах X — сигнал в вольтах (от 0 до 5) A = 0.008271 B = 939.6 C = -3.398 D = 17.339
У У меня ничего так не вышло. Код (Text): #define SENSOR_PIN A5 void setup() { Serial.begin(9600); } void loop() { delay(1000); int val = analogRead(SENSOR_PIN)*0.0039100684; int D = (0.008271+939.6*val)/(1+(-3.398*val)+17.339*val*val); Serial.println(D); } Сенсор пишет 19 постоянно.
Вот работающий код из проекта. Код (Text): #define SENSOR_PIN A0 void setup() { Serial.begin(9600); } void loop() { delay(1000); int value = analogRead(SENSOR_PIN); Serial.println(value); Serial.println("Distance:"); float distance = getDistance(value); Serial.println(distance); } float getDistance(int value) { float vcc = 0.004882812 * value; Serial.print("VCC = "); Serial.println(vcc); float a = 0.008271; float b = 939.6; float c = -3.398; float d = 17.339; float distance = (a + b*vcc)/(1+c*vcc+d*vcc*vcc); return distance; } UPD: учти, что у сенсора есть мертвая зона < ~15 см, смотри график наряжения в зависимости от расстояния http://sharp-world.com/products/device/lineup/data/pdf/datasheet/gp2y0a02_e.pdf