MedicusAmicus Опубликовано 16 августа, 2016 Жалоба Поделиться Опубликовано 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); } Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
Rumlin Опубликовано 16 августа, 2016 Жалоба Поделиться Опубликовано 16 августа, 2016 Не понял смысла фильтра.имхо надо секунды две считывать с ультразвукового датчика значения, затем посчитать среднее. П.С. а детектором движения обойтись нельзя? Есть с встроенным фотореле. Цитата Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов Ничего не делается к лучшему © Борис РаушенбахЛюди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 16 августа, 2016 Автор Жалоба Поделиться Опубликовано 16 августа, 2016 надо секунды две считывать с ультразвукового датчика значения, затем посчитать среднее Пример для чайника? а детектором движения обойтись нельзя? Есть с встроенным фотореле нельзя, ибо железо уже распаяно, надо отладить. И на эту дуину еще функций навешано будет, свет - для разминки-ознакомления. Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
Rumlin Опубликовано 16 августа, 2016 Жалоба Поделиться Опубликовано 16 августа, 2016 С телефлна ничего не напишу. Смысл — цикл N раз. Внутри чтение, суммирование в общую сумму, пауза если датчик этого требует. По окончании циклов общую сумму делим на N — это будет среднее. Цитата Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов Ничего не делается к лучшему © Борис РаушенбахЛюди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский Ссылка на комментарий Поделиться на другие сайты Поделиться
Пэтро Опубликовано 16 августа, 2016 Жалоба Поделиться Опубликовано 16 августа, 2016 MedicusAmicus, А можно лог срабатывания дальномера? Правильного и ложного. impulseTime=pulseIn(S_ECHO, HIGH); // Замеряем длину импульса //Добавить Serial.print(impulseTime); Цитата Подключаем Оптический гигабитный интернет в Симферополе и районе.+79787647406http://lugovoe.su Ссылка на комментарий Поделиться на другие сайты Поделиться
SlavaD Опубликовано 16 августа, 2016 Жалоба Поделиться Опубликовано 16 августа, 2016 Смысл — цикл N раз. Внутри чтение, суммирование в общую сумму, пауза если датчик этого требует. По окончании циклов общую сумму делим на N — это будет среднее.Зачем вообще среднее, идея с циклом да, но берем например цикл 3 раза и выбираем минимальное значение, дальше с ним и работаем. За 3 цикла объект надеюсь мимо датчика пробежать не успеет ? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 16 августа, 2016 Автор Жалоба Поделиться Опубликовано 16 августа, 2016 Пэтро, берем например цикл 3 раза и выбираем минимальное значение 181153 !!!!!184180 Итог - ложняк Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
SlavaD Опубликовано 16 августа, 2016 Жалоба Поделиться Опубликовано 16 августа, 2016 181153 !!!!!184180Итог - ложнякОшибся, не минимальное, а максимальное.184 !!!итог - все верно Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Rumlin Опубликовано 16 августа, 2016 Жалоба Поделиться Опубликовано 16 августа, 2016 Ошибся, не минимальное, а максимальное.184 !!!итог - все верноЕсли врет в обе стороны от среднего, то мин и макс это ложно Цитата Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов Ничего не делается к лучшему © Борис РаушенбахЛюди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 16 августа, 2016 Автор Жалоба Поделиться Опубликовано 16 августа, 2016 Врет в минус.Попробую цикл на 3 измерения Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 16 августа, 2016 Автор Жалоба Поделиться Опубликовано 16 августа, 2016 (изменено) Таким образом пойдет? 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); АПД: не пойдет.данные "замораживаются" на последнем значении массива Изменено 16 августа, 2016 пользователем MedicusAmicus Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
SlavaD Опубликовано 16 августа, 2016 Жалоба Поделиться Опубликовано 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; Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 16 августа, 2016 Автор Жалоба Поделиться Опубликовано 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);} Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
SlavaD Опубликовано 16 августа, 2016 Жалоба Поделиться Опубликовано 16 августа, 2016 Ошибок стало в три раза больше Мне не на чем отлаживать, я пока ардуинку только в теории видел, код как идея был. Так, визуально, не вижу проблемы. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 16 августа, 2016 Автор Жалоба Поделиться Опубликовано 16 августа, 2016 Так, визуально, не вижу проблемы. Так отож... Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
Пэтро Опубликовано 16 августа, 2016 Жалоба Поделиться Опубликовано 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);} Цитата Подключаем Оптический гигабитный интернет в Симферополе и районе.+79787647406http://lugovoe.su Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 17 августа, 2016 Автор Жалоба Поделиться Опубликовано 17 августа, 2016 Пэтро, спасибо за попытку, но теперь абсолютно все значения неверны. Из предыдущих 180 получилось 130-140-150.Попробую зайти с другой стороны - 3 вложенных цикла с проверкой distance<RANGE Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
Rumlin Опубликовано 17 августа, 2016 Жалоба Поделиться Опубликовано 17 августа, 2016 мало циклов — одна ошибка дает большое отклонение. Если датчик позволяет часто опрашивать без критического роста ошибки, то циклов надо 20-30. Цитата Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов Ничего не делается к лучшему © Борис РаушенбахЛюди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский Ссылка на комментарий Поделиться на другие сайты Поделиться
Пэтро Опубликовано 17 августа, 2016 Жалоба Поделиться Опубликовано 17 августа, 2016 Вы так и не скинули сравнение логов, где нужно сработать и не нужно. Надо больше дебаг информации, я лично не понимаю почему оно может не сработать. Цитата Подключаем Оптический гигабитный интернет в Симферополе и районе.+79787647406http://lugovoe.su Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 17 августа, 2016 Автор Жалоба Поделиться Опубликовано 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); } Поставил на проверку. Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
Пэтро Опубликовано 17 августа, 2016 Жалоба Поделиться Опубликовано 17 августа, 2016 На фоне потока верных данных - единичные провалы.я же показал как эти провалы прекрасно усредняются.. Не понятно почему не работает. Цитата Подключаем Оптический гигабитный интернет в Симферополе и районе.+79787647406http://lugovoe.su Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 17 августа, 2016 Автор Жалоба Поделиться Опубликовано 17 августа, 2016 Я тоже в раздумьях.Поставлю счетчик срабатываний, посмотрю помехоустойчивость текущей версии.Усредненная версия снижает чувствительность к тому же.Или увеличивать количество элементов в усреднении, или снижать порог. И то, и другое нежелательно. Срабатывать должен при пороге 160-170, а общая дистанция 180 Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
Rumlin Опубликовано 17 августа, 2016 Жалоба Поделиться Опубликовано 17 августа, 2016 Ну поставьте три датчика расстояния. Решение принимается голосованием — два датчика с правильным значением будут всегда против одного ложного. Цитата Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов Ничего не делается к лучшему © Борис РаушенбахЛюди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский Ссылка на комментарий Поделиться на другие сайты Поделиться
MedicusAmicus Опубликовано 17 августа, 2016 Автор Жалоба Поделиться Опубликовано 17 августа, 2016 Три датчика - перебор для одного коридора.У меня их всего 4, на каждую из запланированных зон.И согласовывать их тоже придется с учетом эха. Цитата Мы живём в мире, где улыбка уже не значит хорошее отношение к тебе.Где поцелуи совсем не значат чувства. Где признания не значат любовь. Где каждый одинок и никто не старается это изменить. Где слова теряют всякий смысл, потому что несут ложь. Нравственность придумали сытые, могущественные и очень неглупые люди, чтобы все остальные посвящали свой досуг поискам правых и виноватых… и не мешали им спокойно кушать! (магистр Нуффлин Мони Мах) Ссылка на комментарий Поделиться на другие сайты Поделиться
Rumlin Опубликовано 17 августа, 2016 Жалоба Поделиться Опубликовано 17 августа, 2016 Ну тогда делать три измерения - если совпали (±%), то считать достоверным. Цитата Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов Ничего не делается к лучшему © Борис РаушенбахЛюди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.