Ультразвуковой дальномер и таймер
- Войдите на сайт для отправки комментариев
Ср, 30/12/2015 - 08:59
Добрый день.
Прошу помощи т.к. не знаю куда начать копать. Хочу вот что сделать-есть ультразвуковой дальномер HC-SR04 и Nano. Измеряю расстояние до объекта, если объект находится на 28см<Расстоянии<30см(промежуток) больше 3сек, тогда загорается и горит светодиод. Горит до тех пор пока расстояние не станет меньше 5см(не совсем уверен что получится,просто не хочу мутить кнопку,а просто поднести руку к датчику и вырубить светодиод, такой вот аналог кнопки квитирования).
Код пока получился такой:
#include <Ultrasonic.h> Ultrasonic ultrasonic(8,9); #define ledPin 12 #define INTERVAL 3000 unsigned long previousMillis; void setup() //процедура setup { pinMode(ledPin, OUTPUT); Serial.begin(9600); ledPinState=0; } void loop() { int distance_cm=ultrasonic.Ranging(CM); Serial.print(distance_cm); Serial.println("cm"); delay(100); if (distance_cm<30&&distance_cm>28&&millis() - previousMillis > INTERVAL){ previousMillis = millis(); digitalWrite(ledPin,HIGH);} if(distance_cm<5){ digitalWrite(ledPin,LOW); } if(distance_cm>31){ digitalWrite(ledPin,LOW); } }
А в чём помощь-то нужна? Что с этим кодом не так?
Ой! А чё это в 22-ой строке написано?
distance_cm<30&&distance_cm>28
Вы уверены, что не хотите просто сравнить с 29? Других-то вариантов нет (она же int). Это вообще, про что?
Ну вообще да,ступил чето,можно проверить равно ли 29 :)Хотя думаю надо вообще длину в мм высчитывать, иначе погрешность боюсь большая будет,хотя читал что точность дальномера +/- 1см, кто скажет как на деле?
читал что точность дальномера +/- 1см, кто скажет как на деле?
У HC-SR04 - как повезёт и зависит от чёртовой уймы причин (например, от того из чего сделано препятствие). Надо экспериментировать.
Просто хочу на его основе сделать "датчик открытой двери холодильника" с таймером, и боюсь в сантиметрах мне точности не хватит.
Вроде подправил код,на 123circuits вроде в эмуляторе работает:
> датчик открытой двери холодильника
А просто замукать два контакта не вариант?
Т.е. открыл дверь и сразу зуммер заорал?И смысл?Нужен как раз именно таймер.
Можно еще конечно через заряд конденсатора сделать,но выбрал вариант с ардуиной.
Т.е. открыл дверь и сразу зуммер заорал?И смысл?Нужен как раз именно таймер.
Можно еще конечно через заряд конденсатора сделать,но выбрал вариант с ардуиной.
Можно на лисапеде педали крутить, но выбрал вариант с лошадью.))))
Таймер 555 (транзистор+RC) и магнит-геркон, не? Зачем целый МК, тем более типа дуины, на это вешать?
Можно на лисапеде педали крутить, но выбрал вариант с лошадью.))))
Не совсем понял комплимент это или подкол :) Ну да ладно :)
Через дуину решил делать т.к. с радиодеталями напряженка в нашем городе,а из соседнего одну микросхемку копеечную заказывать влом,да и по доставке накладно.А на дуине можно любую(ну или почти?)логику написать.
Еще думаю над вариантом геркон+дуина :)
Это "Тополем" по воробью палить. Помойки и телевизоры, времен Брежнева, на чердаке у вас тоже отменили? Любой древний транзистор (ток для пищалки должен обеспечить, П5 не подойдет), два резистора, конденсатор и активная пищалка (можно пассивную, тогда еще пяток окаменевших деталей потребуется).
А мощи 328 Atmegi, вам на сотню холодильников хватит и еще останется.
Я вполне понял ваш посыл.И отчасти предпологал что вместо помощи опять разговоры пойдут в эту сторону :)Но вот объясните мне,уважаемый bwn, нахрена мне лазить по помойкам, когда Ардуино Нано сейчас стоит ~150руб.?
Еще раз повторюсь,я понял что пытаетесь научить меня "рационально использовать мощности".Но мне бы пока с этим разобраться, а потом что то переделать в сторону упрощения схемы всегда можно успеть :)
Дуина+геркон - отслеживаем пин на замыкание-размыкание, запускаем таймер, по истечении интервала начинаем пищать.
Дуина+фоторезистор - отслеживаем сигнал включения света, далее аналогично.
Дуина + холодильник - отслеживаем подачу напряжения на лампу холодильника.
Дуина+термодатчик - отслеживаем изменение температуры в верх, запускаем таймер, продолжаем контроль (если остановилось или пошло вниз сбрасываем таймер) здесь придется еще вводить дополнительные коэффициенты и учесть горячую кастрюлю.
Спасибо.
С самой концепцией я вроде определился-или датчик расстояния или геркон.Буду и то и то пробовать.
С фоторезюком отпала идея из-за последнего случая "не закрытой дверцы"-на двери стояла подставка для пакета с молоком у которой ручка(на подобии как у кружки)и эта ручка уперлась в контейнер с овощами,и получилось что концевик на ~1мм вдавило и свет погас,но фактически щель то осталась.И холодильник так всю ночь простоял.
Поэтому сначала идея с HC-SR04.Если не получится-геркон.Если и это не сработает-выкину подставку для молока и сделаю через фоторезистор :)
Единственное меню смущает в этом таймере это millis(), он же через какое то время переполняется.Как код в этом случае себя поведет?
Единственное меню смущает в этом таймере это millis(), он же через какое то время переполняется.Как код в этом случае себя поведет?
Уже сто раз на форуме обсуждалось, как работало, так и будет работать.
Уже сто раз на форуме обсуждалось, как работало, так и будет работать.
Это не совсем так. Вопрос - как запрограммировать. Пример "блинк без делэй" с данного сайта - да, нормально работает, но Интернет переполнен похожими примерами, которые при переполнении ломаются. Это (ломание) не так просто запрограммировать, но специалисты, как показывает практика, имеются.
Единственное меню смущает в этом таймере это millis(), он же через какое то время переполняется.Как код в этом случае себя поведет?
Как запрограммируете. так и поведёт.
Если нет уверенности в понимании арифметики, то есть очень простой спобсоб проверить как поведёт. Взять просто число вместо миллис и написать цикл, где это число постоянно увеличиваясь проходит переполнение. И просто посмотреть как ведёт себя Ваш алгоритм.
Единственное меню смущает в этом таймере это millis(), он же через какое то время переполняется.Как код в этом случае себя поведет?
Запрограммировал вот так http://arduino.ru/forum/programmirovanie/ultrazvukovoi-dalnomer-i-taimer#comment-157769 (#5 сообщение чуть выше)
Уже сто раз на форуме обсуждалось, как работало, так и будет работать.
Это не совсем так. Вопрос - как запрограммировать. Пример "блинк без делэй" с данного сайта - да, нормально работает, но Интернет переполнен похожими примерами, которые при переполнении ломаются. Это (ломание) не так просто запрограммировать, но специалисты, как показывает практика, имеются.
Соглашусь, было бы желание, и что один человек построил, другой завсегда сломать сможет.))))
...хотя читал что точность дальномера +/- 1см, кто скажет как на деле?
На деле погрешность сильно зависит от того, насколько точно вы знаете скорость звука, читай, температуру.
Т.е. открыл дверь и сразу зуммер заорал?И смысл?Нужен как раз именно таймер.
Можно еще конечно через заряд конденсатора сделать,но выбрал вариант с ардуиной.
Можно на лисапеде педали крутить, но выбрал вариант с лошадью.))))
Таймер 555 (транзистор+RC) и магнит-геркон, не? Зачем целый МК, тем более типа дуины, на это вешать?
Да проще растяжку поставить %)
Открыл дверь - и усе......
Таймер 555 (транзистор+RC) и магнит-геркон, не? Зачем целый МК, тем более типа дуины, на это вешать?
Все таки пробую вникнуть как этот таймер работает.Т.е. мне ведь нужно чтобы включение происходило не сразу,а только если на входе есть/нет (тут можно по разному сделать) сигнал в течении какого то определенного времени(время за которое успеет зарядиться конденсатор).Нашел такой сайт http://everycircuit.com/app (модеры не сочтите за рекламу), так вот сможет кто нить мне хотя бы в ней нарисовать, как правильно должна работать схема. Скока ни пытался я на этом сайте "перерисовать" схемы с инета-ниче не работает.