MedicusAmicus Posted August 16, 2016 Report Share Posted August 16, 2016 ТЗ: ночное освещение коридора. Ардуинка измеряет освещенность и, ультразвуковым дальномером HC-SR04, - расстояние до препятствия. Если темно и расстояние уменьшилось - зажечь свет. Все бы работало неплохо, кроме: периодически дальномер выдает ошибку в расстоянии - 1-2 измерения, что приводит к ложным срабатываниям.Попробовал усреднение из отсюда - не помогло.Люди добрые! Помогите, кто чем может! Костыли под катом #define LDR_PIN A1 //пин фоторезистора //#define POT_PIN A2 //пин регулятора #define RELAY_PIN A0 //пин реле #define S_TRIG 3 //триггер звука #define S_ECHO 4 //ловим эхо const byte averageFactor = 10; // коэффициент сглаживания показаний (0 = не сглаживать) // чем выше, тем больше "инерционность" int RANGE = 178; //предел дистанции обнаружения int impulseTime = 180; // считанное значение int sensorDistance; unsigned long previousMillis1 = 0; //храним время последнего Включения света unsigned long interval = 10000; //интервал работы (10 секунд) void setup() { Serial.begin(9600); pinMode (RELAY_PIN, OUTPUT); pinMode (S_TRIG, OUTPUT); } void loop() { // put your main code here, to run repeatedly: int light = analogRead(LDR_PIN); //читаем освещенность int tres = 400; // analogRead(POT_PIN); //читаем порог bool dark = (light < tres); //сравниваем освещенность с порогом Serial.println("light \t tres \t dark \t distance \t needLight"); Serial.print(light); Serial.print("\t"); Serial.print (tres);Serial.print("\t"); Serial.print(dark);Serial.print("\t"); digitalWrite(S_TRIG, HIGH); /* Подаем импульс на вход trig дальномера */ delayMicroseconds(10); // равный 10 микросекундам digitalWrite(S_TRIG, LOW); // Отключаем impulseTime=pulseIn(S_ECHO, HIGH); // Замеряем длину импульса //фильтр случайных срабатываний if (averageFactor > 0) // усреднение показаний для устранения "скачков" { int oldimpulseTime = impulseTime; impulseTime = (oldimpulseTime * (averageFactor - 1) + impulseTime) / averageFactor; // <новое среднее> = (<старое среднее>*4 + <текущее значение>) / 5 } sensorDistance=impulseTime/58; // Пересчитываем в сантиметры Serial.print(sensorDistance); Serial.print("\t "); // Выводим на порт bool NeedLight = (sensorDistance<RANGE && dark); if (NeedLight == 1) { analogWrite (RELAY_PIN, 255); // горит previousMillis1 = millis(); // отсчёт отсрочки начинается сначала... } // Прошло время выключаем свет if (previousMillis1 && (millis()-previousMillis1 >= interval)) { analogWrite (RELAY_PIN, 0); // не горит previousMillis1 = 0; } Serial.println (NeedLight); delay (1000); } Quote Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Link to comment Share on other sites More sharing options...
Rumlin Posted August 16, 2016 Report Share Posted August 16, 2016 Не понял смысла фильтра.имхо надо секунды две считывать с ультразвукового датчика значения, затем посчитать среднее. П.С. а детектором движения обойтись нельзя? Есть с встроенным фотореле. Quote Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов Ничего не делается к лучшему © Борис РаушенбахЛюди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский Link to comment Share on other sites More sharing options...
MedicusAmicus Posted August 16, 2016 Author Report Share Posted August 16, 2016 надо секунды две считывать с ультразвукового датчика значения, затем посчитать среднее Пример для чайника? а детектором движения обойтись нельзя? Есть с встроенным фотореле нельзя, ибо железо уже распаяно, надо отладить. И на эту дуину еще функций навешано будет, свет - для разминки-ознакомления. Quote Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Link to comment Share on other sites More sharing options...
Rumlin Posted August 16, 2016 Report Share Posted August 16, 2016 С телефлна ничего не напишу. Смысл — цикл N раз. Внутри чтение, суммирование в общую сумму, пауза если датчик этого требует. По окончании циклов общую сумму делим на N — это будет среднее. Quote Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов Ничего не делается к лучшему © Борис РаушенбахЛюди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский Link to comment Share on other sites More sharing options...
Пэтро Posted August 16, 2016 Report Share Posted August 16, 2016 MedicusAmicus, А можно лог срабатывания дальномера? Правильного и ложного. impulseTime=pulseIn(S_ECHO, HIGH); // Замеряем длину импульса //Добавить Serial.print(impulseTime); Quote Подключаем Оптический гигабитный интернет в Симферополе и районе.+79787647406http://lugovoe.su Link to comment Share on other sites More sharing options...
SlavaD Posted August 16, 2016 Report Share Posted August 16, 2016 Смысл — цикл N раз. Внутри чтение, суммирование в общую сумму, пауза если датчик этого требует. По окончании циклов общую сумму делим на N — это будет среднее.Зачем вообще среднее, идея с циклом да, но берем например цикл 3 раза и выбираем минимальное значение, дальше с ним и работаем. За 3 цикла объект надеюсь мимо датчика пробежать не успеет ? Quote Link to comment Share on other sites More sharing options...
MedicusAmicus Posted August 16, 2016 Author Report Share Posted August 16, 2016 Пэтро, берем например цикл 3 раза и выбираем минимальное значение 181153 !!!!!184180 Итог - ложняк Quote Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Link to comment Share on other sites More sharing options...
SlavaD Posted August 16, 2016 Report Share Posted August 16, 2016 181153 !!!!!184180Итог - ложнякОшибся, не минимальное, а максимальное.184 !!!итог - все верно Quote Link to comment Share on other sites More sharing options...
Rumlin Posted August 16, 2016 Report Share Posted August 16, 2016 Ошибся, не минимальное, а максимальное.184 !!!итог - все верноЕсли врет в обе стороны от среднего, то мин и макс это ложно Quote Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов Ничего не делается к лучшему © Борис РаушенбахЛюди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский Link to comment Share on other sites More sharing options...
MedicusAmicus Posted August 16, 2016 Author Report Share Posted August 16, 2016 Врет в минус.Попробую цикл на 3 измерения Quote Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Link to comment Share on other sites More sharing options...
MedicusAmicus Posted August 16, 2016 Author Report Share Posted August 16, 2016 (edited) Таким образом пойдет? const int numReadings = 3; //количество измерений int impulseTimeArray [numReadings]; // данные, считанные с дальномера int index = 0; // индекс для значения, которое считывается в данный момент int maximum_ImpulseTime = 0; // максимальное значение из массива void loop() { ....... impulseTime=pulseIn(S_ECHO, HIGH); // Замеряем длину импульса // собираем массив из 3 измерений impulseTimeArray [index] = impulseTime; // продвигаемся к следующему значению в массиве: index = index + 1; // если мы в конце массива... if (index >= numReadings) // ...возвращаемся к началу: index = 0; // ищем в массиве максимум for(int i = 0; i < numReadings; i++) maximum_ImpulseTime = max(impulseTimeArray[i], maximum_ImpulseTime); АПД: не пойдет.данные "замораживаются" на последнем значении массива Edited August 16, 2016 by MedicusAmicus Quote Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Link to comment Share on other sites More sharing options...
SlavaD Posted August 16, 2016 Report Share Posted August 16, 2016 Круто, только зачем массив. int oldimpulseTime = 0; for(int i = 0; i < numReadings; i++) { digitalWrite(S_TRIG, HIGH); /* Подаем импульс на вход trig дальномера */ delayMicroseconds(10); // равный 10 микросекундам digitalWrite(S_TRIG, LOW); // Отключаем impulseTime=pulseIn(S_ECHO, HIGH); if (impulseTime > oldimpulseTime) { oldimpulseTime = impulseTime; } } impulseTime = oldimpulseTime; Quote Link to comment Share on other sites More sharing options...
MedicusAmicus Posted August 16, 2016 Author Report Share Posted August 16, 2016 Ошибок стало в три раза больше #define LDR_PIN A1 //пин фоторезистора #define RELAY_PIN A0 //пин реле #define S_TRIG 3 //триггер звука #define S_ECHO 4 //ловим эхо const int numReadings = 3; //количество измерений int distance=0; int impulseTime=0; int RANGE = 150; //предел дистанции обнаружения int tres = 400; //порог освещенности unsigned long previousMillis1 = 0; //храним время последнего Включения света unsigned long interval = 10000; //интервал работы (10 секунд) void setup() { // put your setup code here, to run once: pinMode (RELAY_PIN, OUTPUT); pinMode (S_TRIG, OUTPUT); } void loop() { Serial.begin(9600); int light = analogRead(LDR_PIN); //читаем освещенность bool dark = (light < tres); //сравниваем освещенность с порогом Serial.println("light \t tres \t dark \t distance \t needLight"); Serial.print(light); Serial.print("\t"); Serial.print(tres); Serial.print("\t"); Serial.print(dark); Serial.print("\t"); int oldimpulseTime = 0; for(int i = 0; i < numReadings; i++) { digitalWrite(S_TRIG, HIGH); /* Подаем импульс на вход trig дальномера */ delayMicroseconds(10); // равный 10 микросекундам digitalWrite(S_TRIG, LOW); // Отключаем impulseTime=pulseIn(S_ECHO, HIGH); if (impulseTime > oldimpulseTime) { oldimpulseTime = impulseTime; } } impulseTime = oldimpulseTime; distance=impulseTime/58; // Пересчитываем в сантиметры Serial.print(distance); // Выводим на порт Serial.print("\t \t "); bool needLight = (distance<RANGE && dark); if (needLight == 1) // Если расстояние менее предела { analogWrite (RELAY_PIN, 255); // горит previousMillis1 = millis(); // отсчёт отсрочки начинается сначала... } // Прошло время выключаем свет if (previousMillis1 && (millis()-previousMillis1 >= interval)) { analogWrite (RELAY_PIN, 0); // не горит previousMillis1 = 0; } Serial.println (needLight); delay (1000);} Quote Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Link to comment Share on other sites More sharing options...
SlavaD Posted August 16, 2016 Report Share Posted August 16, 2016 Ошибок стало в три раза больше Мне не на чем отлаживать, я пока ардуинку только в теории видел, код как идея был. Так, визуально, не вижу проблемы. Quote Link to comment Share on other sites More sharing options...
MedicusAmicus Posted August 16, 2016 Author Report Share Posted August 16, 2016 Так, визуально, не вижу проблемы. Так отож... Quote Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Link to comment Share on other sites More sharing options...
Пэтро Posted August 16, 2016 Report Share Posted August 16, 2016 Складываем 4 значения делим на 4. т.е. усредняем по 4м значениям.. (181 + 153 + 184 + 180 )/4 = 174.5 опрашиваем еще раз(например) (140 + 143 + 131 + 157 )/4 = 142.75 #define LDR_PIN A1 //пин фоторезистора #define RELAY_PIN A0 //пин реле #define S_TRIG 3 //триггер звука #define S_ECHO 4 //ловим эхо const int numReadings = 3; //количество измерений int distance=0; int impulseTime=0; int RANGE = 150; //предел дистанции обнаружения int tres = 400; //порог освещенности unsigned long previousMillis1 = 0; //храним время последнего Включения света unsigned long interval = 10000; //интервал работы (10 секунд) void setup() { // put your setup code here, to run once: pinMode (RELAY_PIN, OUTPUT); pinMode (S_TRIG, OUTPUT); } void loop() { Serial.begin(9600); int light = analogRead(LDR_PIN); //читаем освещенность bool dark = (light < tres); //сравниваем освещенность с порогом Serial.println("light \t tres \t dark \t distance \t needLight"); Serial.print(light); Serial.print("\t"); Serial.print(tres); Serial.print("\t"); Serial.print(dark); Serial.print("\t"); int impulseTime = 0; //сбрасываем счетчик for(int i = 0; i < numReadings; i++) { digitalWrite(S_TRIG, HIGH); /* Подаем импульс на вход trig дальномера */ delayMicroseconds(10); // равный 10 микросекундам digitalWrite(S_TRIG, LOW); // Отключаем /////////////////////////////////////////////////////////////////////////////////////// impulseTime = impulsetime + pulseIn(S_ECHO, HIGH); // складываем серию импульсов[/b] /////////////////////////////////////////////////////////////////////////////////////// } /////////////////////////////////////////////////////////////////////// impulseTime = impulseTime / numReadings; // вычисляем среднее ////////////////////////////////////////////////////////////////////// distance=impulseTime/58; // Пересчитываем в сантиметры Serial.print(distance); // Выводим на порт Serial.print("\t \t "); bool needLight = (distance<RANGE && dark); if (needLight == 1) // Если расстояние менее предела { analogWrite (RELAY_PIN, 255); // горит previousMillis1 = millis(); // отсчёт отсрочки начинается сначала... } // Прошло время выключаем свет if (previousMillis1 && (millis()-previousMillis1 >= interval)) { analogWrite (RELAY_PIN, 0); // не горит previousMillis1 = 0; } Serial.println (needLight); delay (1000);} Quote Подключаем Оптический гигабитный интернет в Симферополе и районе.+79787647406http://lugovoe.su Link to comment Share on other sites More sharing options...
MedicusAmicus Posted August 17, 2016 Author Report Share Posted August 17, 2016 Пэтро, спасибо за попытку, но теперь абсолютно все значения неверны. Из предыдущих 180 получилось 130-140-150.Попробую зайти с другой стороны - 3 вложенных цикла с проверкой distance<RANGE Quote Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Link to comment Share on other sites More sharing options...
Rumlin Posted August 17, 2016 Report Share Posted August 17, 2016 мало циклов — одна ошибка дает большое отклонение. Если датчик позволяет часто опрашивать без критического роста ошибки, то циклов надо 20-30. Quote Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов Ничего не делается к лучшему © Борис РаушенбахЛюди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский Link to comment Share on other sites More sharing options...
Пэтро Posted August 17, 2016 Report Share Posted August 17, 2016 Вы так и не скинули сравнение логов, где нужно сработать и не нужно. Надо больше дебаг информации, я лично не понимаю почему оно может не сработать. Quote Подключаем Оптический гигабитный интернет в Симферополе и районе.+79787647406http://lugovoe.su Link to comment Share on other sites More sharing options...
MedicusAmicus Posted August 17, 2016 Author Report Share Posted August 17, 2016 Пэтро,181153 !!!!!184180Итог - ложняк Такого лога недостаточно? На фоне потока верных данных - единичные провалы. Пока выкрутился так: #define LDR_PIN A1 //пин фоторезистора #define RELAY_PIN A0 //пин реле #define S_TRIG 3 //триггер звука #define S_ECHO 4 //ловим эхо unsigned int distance=0; unsigned int impulseTime=0; int RANGE = 150; //предел дистанции обнаружения int tres = 400; //порог освещенности unsigned long previousMillis1 = 0; //храним время последнего Включения света unsigned long interval = 10000; //интервал работы (10 секунд) boolean CLOSE0, CLOSE1, CLOSE2; void setup() { [size=2] pinMode (RELAY_PIN, OUTPUT);[/size] pinMode (S_TRIG, OUTPUT); } void loop() { Serial.begin(9600); int light = analogRead(LDR_PIN); //читаем освещенность boolean dark = (light < tres); //сравниваем освещенность с порогом Serial.println("light \t tres \t dark \t distance \t CLOSE0 \t CLOSE1 \t CLOSE2 \t needLight"); Serial.print(light); Serial.print("\t"); Serial.print(tres); Serial.print("\t"); Serial.print(dark); Serial.print("\t"); digitalWrite(S_TRIG, HIGH); /* Подаем импульс на вход trig дальномера */ delayMicroseconds(10); // равный 10 микросекундам digitalWrite(S_TRIG, LOW); // Отключаем impulseTime = pulseIn(S_ECHO, HIGH); distance=impulseTime/58; // Пересчитываем в сантиметры Serial.print(distance); Serial.print("\t "); CLOSE0 = distance<RANGE; Serial.print (CLOSE0); Serial.print("\t"); delay (50); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //начинаем проверки if (CLOSE0 == 1) //итерация1 { digitalWrite(S_TRIG, HIGH); /* Подаем импульс на вход trig дальномера */ delayMicroseconds(10); // равный 10 микросекундам digitalWrite(S_TRIG, LOW); // Отключаем CLOSE1 = (pulseIn(S_ECHO, HIGH)/58) <RANGE; Serial.print (CLOSE1); Serial.print("\t"); delay (50); } if (CLOSE1 == 1) //итерация2 { digitalWrite(S_TRIG, HIGH); /* Подаем импульс на вход trig дальномера */ delayMicroseconds(10); // равный 10 микросекундам digitalWrite(S_TRIG, LOW); // Отключаем CLOSE2 = (pulseIn(S_ECHO, HIGH)/58) <RANGE; Serial.print (CLOSE2); Serial.print("\t"); delay (50); } boolean CLOSE = (CLOSE0 && CLOSE1 && CLOSE2); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// boolean needLight = (CLOSE && dark); if (needLight == 1) // Если расстояние менее предела { analogWrite (RELAY_PIN, 255); // горит previousMillis1 = millis(); // отсчёт отсрочки начинается сначала... } // Прошло время выключаем свет if (previousMillis1 && (millis()-previousMillis1 >= interval)) { analogWrite (RELAY_PIN, 0); // не горит previousMillis1 = 0; } Serial.println (needLight); delay (1000); } Поставил на проверку. Quote Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Link to comment Share on other sites More sharing options...
Пэтро Posted August 17, 2016 Report Share Posted August 17, 2016 На фоне потока верных данных - единичные провалы.я же показал как эти провалы прекрасно усредняются.. Не понятно почему не работает. Quote Подключаем Оптический гигабитный интернет в Симферополе и районе.+79787647406http://lugovoe.su Link to comment Share on other sites More sharing options...
MedicusAmicus Posted August 17, 2016 Author Report Share Posted August 17, 2016 Я тоже в раздумьях.Поставлю счетчик срабатываний, посмотрю помехоустойчивость текущей версии.Усредненная версия снижает чувствительность к тому же.Или увеличивать количество элементов в усреднении, или снижать порог. И то, и другое нежелательно. Срабатывать должен при пороге 160-170, а общая дистанция 180 Quote Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Link to comment Share on other sites More sharing options...
Rumlin Posted August 17, 2016 Report Share Posted August 17, 2016 Ну поставьте три датчика расстояния. Решение принимается голосованием — два датчика с правильным значением будут всегда против одного ложного. Quote Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов Ничего не делается к лучшему © Борис РаушенбахЛюди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский Link to comment Share on other sites More sharing options...
MedicusAmicus Posted August 17, 2016 Author Report Share Posted August 17, 2016 Три датчика - перебор для одного коридора.У меня их всего 4, на каждую из запланированных зон.И согласовывать их тоже придется с учетом эха. Quote Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Link to comment Share on other sites More sharing options...
Rumlin Posted August 17, 2016 Report Share Posted August 17, 2016 Ну тогда делать три измерения - если совпали (±%), то считать достоверным. Quote Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов Ничего не делается к лучшему © Борис РаушенбахЛюди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.