зумер на открытую дверцу холодильника
- Войдите на сайт для отправки комментариев
Пт, 24/03/2017 - 00:08
Добрый день!
В семье маленькие детки стали дотягиваться до дверцы холодильника, открывают ее и так оставляют. Прикрутил к холодильники не хитрую приблуду. Как только дверца открывается зумер начинает наигрывать мелодию, ее слышно с любого уголка квартиры. Мелодия начинает играть сразу как только открывается дверца, а нам с женой хотелось бы что бы она начинала играть секунд через 10 после открытия. Помогите допилить скеч.
// выбор выводов
int gerkon = 6; // Геркон на 6-ый вывод
int soundPin = 5; // зуммер на 5-ый вывод
int gerkonStatus = 1; // первоначальный статус геркона - замкнут.
void setup ()
{
pinMode (gerkon , INPUT); // вывод геркона настраиваем как "вход"
pinMode (soundPin, OUTPUT); // вывод зуммера настраиваем как "выход"
digitalWrite(soundPin, LOW); // сначала зуммер молчит
}
//выполение основной программы
void loop()
{
gerkonStatus = digitalRead(gerkon); // считываем уровень на входе 6 и обновляем статус геркона
if (gerkonStatus == HIGH) // если геркон разомкнут играет мелодия
{
tone(soundPin, 830, 42.96875);
delay(47.7430555556);
tone(soundPin, 207, 3.90625);
delay(4.34027777778);
delay(52.0833333333);
tone(soundPin, 932, 42.96875);
delay(47.7430555556);
delay(56.4236111111);
tone(soundPin, 830, 39.0625);
delay(43.4027777778);
delay(60.7638888889);
tone(soundPin, 783, 42.96875);
delay(47.7430555556);
delay(56.4236111111);
tone(soundPin, 830, 46.875);
delay(52.0833333333);
delay(52.0833333333);
tone(soundPin, 932, 46.875);
delay(52.0833333333);
delay(52.0833333333);
tone(soundPin, 1046, 42.96875);
delay(47.7430555556);
delay(56.4236111111);
tone(soundPin, 1108, 50.78125);
delay(56.4236111111);
delay(47.7430555556);
tone(soundPin, 1244, 50.78125);
delay(56.4236111111);
delay(151.909722222);
tone(soundPin, 1046, 39.0625);
delay(43.4027777778);
delay(164.930555556);
tone(soundPin, 1046, 15.625);
delay(17.3611111111);
delay(34.7222222222);
tone(soundPin, 207, 7.8125);
delay(8.68055555556);
tone(soundPin, 1046, 11.71875);
delay(13.0208333333);
delay(30.3819444444);
tone(soundPin, 1046, 19.53125);
delay(21.7013888889);
delay(30.3819444444);
tone(soundPin, 1046, 27.34375);
delay(30.3819444444);
delay(230.034722222);
tone(soundPin, 1396, 42.96875);
delay(47.7430555556);
tone(soundPin, 138, 11.71875);
delay(13.0208333333);
delay(147.569444444);
tone(soundPin, 1108, 35.15625);
delay(39.0625);
delay(169.270833333);
tone(soundPin, 1108, 11.71875);
delay(13.0208333333);
tone(soundPin, 207, 31.25);
delay(34.7222222222);
delay(4.34027777778);
tone(soundPin, 1108, 23.4375);
delay(26.0416666667);
delay(26.0416666667);
tone(soundPin, 1108, 23.4375);
delay(26.0416666667);
delay(26.0416666667);
tone(soundPin, 1108, 31.25);
delay(34.7222222222);
delay(225.694444444);
tone(soundPin, 1244, 31.25);
delay(34.7222222222);
tone(soundPin, 207, 11.71875);
delay(13.0208333333);
delay(160.590277778);
tone(soundPin, 1046, 27.34375);
delay(30.3819444444);
tone(soundPin, 195, 11.71875);
delay(13.0208333333);
delay(164.930555556);
tone(soundPin, 1046, 11.71875);
delay(13.0208333333);
tone(soundPin, 174, 35.15625);
delay(39.0625);
tone(soundPin, 1046, 15.625);
delay(17.3611111111);
delay(34.7222222222);
tone(soundPin, 1046, 23.4375);
delay(26.0416666667);
delay(26.0416666667);
tone(soundPin, 1046, 35.15625);
delay(39.0625);
delay(13.0208333333);
tone(soundPin, 155, 39.0625);
delay(43.4027777778);
delay(164.930555556);
}
else //если геркон замкнут - тишина
{
digitalWrite(soundPin, HIGH); // зуммер молчит
}
}

а, зачем это всё, если продаются музыкальные дверные звонки?
В семье маленькие детки стали дотягиваться до дверцы холодильника, открывают ее и так оставляют.
Попробуйте их покормить.
увидел бы, купил... а так есть из чего собрать, не могу с задержкой разобратья...
увидел бы, купил... а так есть из чего собрать, не могу с задержкой разобратья...
в Сургуте не продаются дверные звонки? http://prom.ua/Dvernye-zvonki
*кнопку на дверь холодильника - звонок в карман халата жены.
viktorflam, формально - можно поставить delay(10000) перед 19-й строкой.
Но по-хорошему, тут надо переписывать все с нуля в соответствии с идеями из blink without delay.
хотелось бы что бы она начинала играть секунд через 10 после открытия.
Мелодия?.. Ну, ну. Тут бы надо сирену ставить, чтобы отпугивала мелких. Они же только ради мелодии начнут еще чаще холодильник открывать. А вот пугающий звук быстро отобьет охоту лазить, куда не надо. И не только у детей. Некоторым взрослым "ночным охотникам на что-нибудь съедобное" тоже полезной будет.
Да и код бы переделать надо. Или Вам нравится мелодия, играющая от начала до конца, даже если закрыть дверь? В процессе проигрывания проверяйте состояние датчика, если закрыли дверь, то и музыку глушите.
Ноты занесите в массив. Воспроизводите их в цикле и в нем же проверяйте датчик. Двери закрыли - музыкантам спать.
Тут бы надо сирену ставить, чтобы отпугивала мелких.
нужно минировать, что бы мелких наверняка - в клочья
я бы сделал простой пужинный доводчик двери холодильника, вместо кретинизма с зуммерами.
*кстати, у меня холодильник-сука пищит, когда его держишь долго открытым.
А можно вообще просто сделать. Если ардуина только играет мелодию и больше ни в чем не задействована, то подключите блок питания, что питает ардуину, к лампе, что включается в холодильнике при открывании двери. Не нужно будет никаких дополнительных герконов/кнопок/датчиков. Выбросьте из кода проверку геркона, оставьте только мелодию. А в setup() вставьте нужную вам задержку - delay() в таком деле ничем не помешает.
Открыли дверь - подалось питание на ардуину - ардуина при старте выждет паузу и дальше пойдет играть мелодия по кругу, пока не закроете дверь - закрыли дверь - ардуина обесточилась, мелодия утихла.
непойдет. Дети быстро просекут тему. Будут топтать сосиски 9 сек, закрывать дверь, снова открывать и топтать.
ПС. Подойдите к проблеме с точки зрения социальной инженерии. Всыпать детям по жопе разик - другой для профилактики.
Всыпать детям по жопе разик - другой для профилактики.
только хардкор! пластиковая взрывчатка - нет детей, нет проблем.
Будут топтать сосиски 9 сек, закрывать дверь, снова открывать и топтать.
нужно повесить на холодильник с едой замок - пусть дети сдохнут с голоду.
Это интересная мысль. Замок с RFID метками. И ардуина контролирует кол-во и время подходов. Каждому в семе свою личную метку, лучше кулончик на цепи на шею. У главы семейства мастер-ключ для неограниченого доступа с целью загрузки холодильника. Жену можна и на диету, доступ только по четным числам, можна и только по нечетным, но хуже т.к. за 31 идет 1, и два дня подряд жрать будет.
Это интересная мысль. Замок с RFID метками. И ардуина контролирует кол-во и время подходов. Каждому в семе свою личную метку, лучше кулончик на цепи на шею. У главы семейства мастер-ключ для неограниченого доступа с целью загрузки холодильника. Жену можна и на диету, доступ только по четным числам, можна и только по нечетным, но хуже т.к. за 31 идет 1, и два дня подряд жрать будет.
три периметра вокруг холодильника, колючая проволока, пулемётные гнёзда.
Это интересная мысль. Замок с RFID метками. И ардуина контролирует кол-во и время подходов. Каждому в семе свою личную метку, лучше кулончик на цепи на шею. У главы семейства мастер-ключ для неограниченого доступа с целью загрузки холодильника. Жену можна и на диету, доступ только по четным числам, можна и только по нечетным, но хуже т.к. за 31 идет 1, и два дня подряд жрать будет.
три периметра вокруг холодильника, колючая проволока, пулемётные гнёзда.
непойдет. будут хавчик в гнезда таскать.
непойдет. будут хавчик в гнезда таскать.
не будут - им заградотряд не даст.
Не, мужики, ну уж делать умный холодильник, так делать!
Клеем RFID-метки на все основные продукты, добавляем считыватель, часы и какой-нибудь Интернетный модуль.
Система контролирует остаток продуктов и вовремя оформляет заказ на доставку в этих ваших интернетах.
Общий набросок (идея) скетча выглядит примерно так:
// // Функция определена в отдельном файле, // оформляет заказ доставки продуктов с // сайта edu-domoi.ru или ему подобного // возвращает true, если заказ успешно размещён // extern bool groceriesOrder(const byte itemId, const byte amount); // // Функция определена в отдельном файле, // возвращает количество оставшихся в холодильнике // единиц товара itemId // exetrn byte ostalos(const byte itemId); #define WEEKDAY_LIMIT 4 #define WEEKEND_LIMIT 12 void loop() { byte limit = rtc.dayOfWeek() == FRIDAY ? WEEKEND_LIMIT : WEEKDAY_LIMIT; if (ostalos(PIVO) < limit) { if (! groceriesOrder(PIVO, 20)) { // Включить состояние тревоги (мигание, сирену или смс-ку) } } } void setup() { // тут напишем всё, что надо }Во дела..! Я и не думал, что столько разных решений можно предпринять... мне понравились
Тут бы надо сирену ставить, чтобы отпугивала мелких.
нужно минировать, что бы мелких наверняка - в клочья
и еще
Всыпать детям по жопе разик - другой для профилактики.
только хардкор! пластиковая взрывчатка - нет детей, нет проблем.
Ну и самая мощная:
Это интересная мысль. Замок с RFID метками. И ардуина контролирует кол-во и время подходов. Каждому в семе свою личную метку, лучше кулончик на цепи на шею. У главы семейства мастер-ключ для неограниченого доступа с целью загрузки холодильника. Жену можна и на диету, доступ только по четным числам, можна и только по нечетным, но хуже т.к. за 31 идет 1, и два дня подряд жрать будет.
три периметра вокруг холодильника, колючая проволока, пулемётные гнёзда.
Про RFID-метки тоже где-то читал, может даже и тут...
Мысль про то, что бы запитать ардуину от лампочки была, но я бы хотел еще прикрутить два датчика температуры и простенький дисплей по i2C что бы наблюдать время от времени за "погодой" в камерах, причем эта чатсть функционала уже реализована... короче запитка от лампочки не катит... и delay на 19 строкой тож не пойдет, потому что если открыть дверцу и сразу ее закрыть, мелодия все равно пропоет через 10 сек, даже если дверь будет уже закрыта... буду пробовать вариант с "blink without delay" или может кто нибудь еще чего умного подскажет...
буду пробовать ...
Главное не забудьте про
Пробуйте кормить детей.
Можно еще так: через 9 секунд заиграла музыка, через 12 отключается свет в холодильной камере, через 15 подается питание на детонатор. )
ага. идеальное решение. я уже - http://arduino.ru/forum/programmirovanie/zumer-na-otkrytuyu-dvertsu-kholodilnika#comment-271671
А иначе и https://www.youtube.com/watch?v=hbxT8jVS6MM
Пробуйте кормить детей.
это непедагогично.
Зато дёшево, надежно и практично )))