Помогите пожалуйста я новичок!
- Войдите на сайт для отправки комментариев
Доброго времени суток! Очень сильно нуждаюсь в помощи! Решили с другом сделать автоматическую подачу звонков в школу т.к. вахтерши их или забывают подать или подают с большим опазданием... Все шло по плану пока не начались ложные срабатывания после 2-3 часов работы. Задумка такова:
В арудуино uno заложено расписание звонков (рабочие дни/субботний день/вс-нет звонков). По наступлению заданного времени из расписания - происходит кратковременное включение реле (секунд 8). Дальше реле включает уже контактор, а он замыкает силовую цепь звонков. Сверять время арудино будет с часов реального времени DS 3231.
Помогите пожалуйста с этой проблемой! Буду очень благодарен если скажете в каких моментах кода ошибки и как такой код должен выглядеть в идеальном состоянии.
Заранее спасибо!
КОД:
#include <Wire.h> #include <DS3231.h> int Rele = 7; int Green = 5; //пин зеленый светодиод int Blue = 9; //пин синий светодиод int Red = 11; //пин красный светодиод DS3231 Clock; bool h12 = false; bool PM; bool Century; void setup() { Wire.begin(); pinMode(Rele, OUTPUT); digitalWrite(Rele, HIGH); pinMode(Green, OUTPUT); pinMode(Blue, OUTPUT); pinMode(Red, OUTPUT); } void loop() { int second, minute, hour, day; day = Clock.getDoW(); hour = Clock.getHour(h12, PM); minute = Clock.getMinute(); second = Clock.getSecond(); digitalWrite(Green, HIGH); if (day == 1,2,3,4,5 && hour == 8 && minute == 30 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 9 && minute == 15 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 9 && minute == 25 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 10 && minute == 10 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 10 && minute == 25 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 11 && minute == 10 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 11 && minute == 30 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 12 && minute == 15 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 12 && minute == 30 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 13 && minute == 15 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 13 && minute == 25 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 14 && minute == 10 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 14 && minute == 20 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 15 && minute == 05 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 15 && minute == 25 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 16 && minute == 10 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 16 && minute == 30 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 17 && minute == 15 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 17 && minute == 25 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 18 && minute == 10 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 18 && minute == 20 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 1,2,3,4,5 && hour == 19 && minute == 05 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 6 && hour == 8 && minute == 30 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 6 && hour == 9 && minute == 15 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 6 && hour == 9 && minute == 50 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 6 && hour == 10 && minute == 10 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 6 && hour == 10 && minute == 20 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 6 && hour == 11 && minute == 05 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 6 && hour == 11 && minute == 15 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 6 && hour == 12 && minute == 00 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 6 && hour == 12 && minute == 10 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 6 && hour == 12 && minute == 55 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 6 && hour == 13 && minute == 05 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 6 && hour == 13 && minute == 50 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 6 && hour == 14 && minute == 00 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 6 && hour == 14 && minute == 45 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 6 && hour == 14 && minute == 55 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } if (day == 6 && hour == 15 && minute == 40 && second == 00){ digitalWrite(Rele, LOW); digitalWrite(Blue, HIGH); delay(8000); digitalWrite(Blue, LOW); digitalWrite(Rele, HIGH); } }
1. Что по-вашему означает конструкция
? Уточняю вопрос, при каких n выражение n == 1, 2, 3, 4, 5 будет истинным?
Не торопитесь с ответом. Запустите вот такой скетч и попробуйте объяснить почему его результат именно такой, а не другой
Блиииин... я старый код случайно залил на сайт... я примерно понял, что вы имеете ввиду, но это уже исправлено...
Все равно огромное спасибо за то, что обратили внимание и сказали ошибку и без разницы, что она уже исправлена!
Вот новый КОД:
Хорошо, давайте сначала
1. Что по-вашему означает конструкция
? Уточняю вопрос, при каких n выражение n == 1 || 2 || 3 || 4 || 5 будет истинным?
Не торопитесь с ответом. Запустите вот такой скетч и попробуйте объяснить почему его результат именно такой, а не другой
И, да, кстати, избавьтесь от привычки писать нули перед числами, если Вы не понимаете, что они значат. В Вашей конструкции типа
minute == 05 && second == 00
Вам просто повезло, что всё работает так, как Вам надо. Попробуйте вместо 05 поставить 09, получите массу удовольствия.
А ещё лучше попробуйте так
Узнаете много интересного.
Не проще хранить времена подачи звонков в виде двумерного целочисленного массива и в цикле перебирать на совпадение с показаниями часов?
Не проще хранить времена подачи звонков в виде двумерного целочисленного массива и в цикле перебирать на совпадение с показаниями часов?
А еще лучше хранить в структуре.Хотя привычнее мне в классе.
А что мы будем хранить в структуре?
А с чем могут быть связаны ложные срабатывания? Память забивается или с что-то другое? Я товарищ Данила, вместе работаем над созданием автозвонков. Само устройство сейчас в школе лежит, завтра протестирует ваш код и ответит) Спасибо большое, что есть такие отзывчивые люди, как Вы!)
А с чем могут быть связаны ложные срабатывания?
В условии срабатывани написан бред. Пока он не исправлен проводить какой-либо анализ срабатываний не имеет смысла. Выпишите нормальные условия, а там видно будет.
А что мы будем хранить в структуре?
А вот это и будем хранить день, час, минута,секунда. Точнее структура задает формат. А данные будут хранится в массивом записей по структуре. В цикле все перебрали. Если хоть одна совпала, то выход из массива с флагом что надо звонить. А если нет совпадений то просто выход без звонка. Простыня поменьше, да и вносить(убирать)записи проще.
А что мы будем хранить в структуре?
Точнее структура задает формат. А данные будут хранится в массивом записей по структуре
Не хочу показаться назойливым, но что такое "массив записей по структуре"?
Доброго времени суток! Спустя пару дней пришли к такому:
Как быть теперь?
Доброго времени суток! Спустя пару дней пришли к такому:
Как быть теперь?
Не знаю. А как оно себя ведёт? Чё делает, чего не делает? Вы ж ничего не написали.
У нас звонок не дома находится, а в школе появляться каждый день, к сожалению, возможности нет.
Как я понимаю:
Сделает срабатывание именно в этом промежутке дней (1-5). Остальной код не меняли
У нас звонок не дома находится, а в школе появляться каждый день, к сожалению, возможности нет.
Как я понимаю:
Сделает срабатывание именно в этом промежутке дней (1-5). Остальной код не меняли
По идее, да - это должно дать истину при day от 1 до 5 включительно.
С точки зрения правильности написания оператора if - ошибок не вижу .... но интересно другое, вы собираетесь расписание звонков хранить как часть программного кода? А как быть, если расписание звонков в предпраздничные дни другое, или просто в честь 8-го марта уроки будут сокращены? Будете заново код переписывать?
Будете заново код переписывать?
Why not? Особенно, если это не бесплатно!
А если серьёзно, то тут многие предлагали парням разные улучшения, но я этого не делаю и прошу остальных пока не делать.
Парни - молодцы! Они не особо чего умеют, но не плачутся "подайте мне готовый код" (как многие здесь), а пытаются делать сами, исходя из тех знаний и умений, что у них есть. Я очень уважаю такую позицию. Давайте дадим ребятам возможность доделать, порадоваться успеху, почувствовать себы мужиками, которые могут решать проблемы. Потом, когда они доделают САМИ, мы вполне сможем подсказать им как сделать лучше. Но сейчас они близки к Победе (самостоятельной!) и я предлагаю не лишать их этой победы. Пусть доделают!
Если Вы заметили я ведь им ни строчки кода не дал, просто показывал как проверить некорректность условий. Именно для того, чтобы они дожали САМИ. Это для них сейчас важнее, чем сократить код или сделать удобным интерфейс смены расписания.
Да, там будет храниться. По поводу праздиков/сокращенных дней - на ящике есть кнопка выключения ардуино и большая кнопка ручной подачи. В праздники просто выключаем микроконтроллер и подаем звонки в ручном режиме. Теперь осталось решить проблему ложных срабатываний. Через некоторое время работы, к примеру, происходит срабатывание по расписанию в 12:30 и буквально, минуты через 3-5 происходит повторное срабатывание, которое не забито в расписание. Дальше история продолжается. Если перезагрузить ардуинку (жмем кнопку на плате) - все работает нормально. Наблюдали два дня подряд - начинает ложно срабатывать где-то через 3 часа работы. Один день работало стабильно, потом такое появилось, по разному вылетает. У меня подозрение, что его память забивается, но я могу ошибаться.
У меня подозрение, что его память забивается, но я могу ошибаться.
Ничего там не забивается.
Как я понял с последними изменениями в условиях Вы ещё не испытывали? Испытайте и если проблема останется, то будем думать.
Хорошо, мы завтра утром поставим и будем наблюдать. Спасибо большое, что здесь есть такие Люди!
(жмем кнопку на плате) - все работает нормально. Наблюдали два дня подряд - начинает ложно срабатывать где-то через 3 часа работы. Один день работало стабильно, потом такое появилось, по разному вылетает. У меня подозрение, что его память забивается, но я могу ошибаться.
Подозрение, что просто помехи по питанию ...
Парни - молодцы! Они не особо чего умеют, но не плачутся "подайте мне готовый код"
:)
Подозрение, что просто помехи по питанию ...
Да, очень похоже.
ТС. Выложите пожалуйста схему, посмотрим что у Вас и как там.
а по субботам школа не учится? или звонки подавать не обязательно после 8-30?
Доброго времени суток! Схему чуть позже выложит Леша. Сегодня залили скетч с новой логикой. Дни заработали!
Огромное спасибо за подсказку! Настроение сразу в космос! Осталась одна проблема: ложные срабатывания так и не прекратились(((
Есть мысль сделать следующую вещь: Припаять к выходу ардуины ("reset") светодиод красного цвета(он уже установлен в ящике). И с помощю if спрашивать его сработало-ли реле? Если оно сработало чаще чем через 10 минут зажигать светодиод который замкнет цепь "reset" . Ардуино перезагрузится и продолжит работу.
Еще есть сомнения к блоку питания на выходе у которого: 5V и 550mA
P.S. Это только идея и сначало хотелось бы спросить ваше мнение (я про светодиод).
Не надо никаких костылей. Нужно просто выявить источник помехи и устранить.
Давайте схему, а пока её нет, можете попробовать полностью очистить loop - убрать из реё ВСЁ и запустить. Почти уверен, что ложные срабатывания будут. А это значит, что они вообще никак не связаны с программой, а только с внешней схемой.
Но схему подключния давайте обязательно.
И кстати, я не понял что значит "зажигать светодиод который замкнет цепь "reset"", ресет гораздо проще вызвать программно. Но Вам надо не это, а просто устранить источник помех.
Чертим схемы. Вот фото устройства (маленькая коробка - микроконтроллер/RTC. Большая - Автоматы/Реле/Контактор/Блок питания Ардуино)
Судя по снимкам, помехи могут быть даже из-за наводок от силовых кабелей. Я бы отнес ардуинку с первичным ключом (реле) подальше от силовой части
Фольга спасет от этих помех(если ей обклеить коробочку с ардуиной и часами)? И выдержит ли порт ардуино(GND) все что будет прилетать с фольги (в голову пришла идея обклеить внутри коробочку от ардуины фольгой после чего ее(фольгу) заземлить)
Насчет схемы приносим извинения сегодня не получиться меня уже спать гонят. И кстати еще дополнение по поводу ложных срабатываний: Мы заметили что когда они появляются, то вся электроника работает в обычном режиме(при срабатывании реле, загорается синий светодиод, после чего проходят 8000мс(указано в скетче) выключается светодиод и реле. Раньше было подозрение на память и помехи в питании, но Евгений сказал, что это точно не память. Остается 2 варианта: 1)Помехи, 2)Что-то в коде...
Скетч:
Обклейка фольгой может помочь, но соединять ее нужно не с GND ардуины, а с защитной землей силовой части (не с рабочим нулем). Обычно это отдельная шина в шитке, к которому подсоеденены желто-зеленые провода
У нас нет 0 в силовой части, поэтому и возник вопрос: можно-ли землю на порт ардуино кинуть?
P.S. Вариантов заземления рядом с ящиком тоже нет.
Еще. Блок питания выдает 5 вольт и 0.5 ампера. Насколько я знаю, при таком слабом питании возможна нестабильная работа. Если дело будет не в помехах, значит будем менять блок питания на более мощный
В каком именно параметре возможно потребуется большая мощность? И почему тогда она(ардуино)в самом начале нормально замыкает реле, но как только проходит 2-3 часа начинаются ложные срабатывания?
Отвлеченный разговор, нужно посмотреть вашу схему. Например, как вы управляете реле?
Мужики, это пустая болтовня пока нет схемы.
DanilRyzhov, оптопары всяко лучше чем фольга. Хотя, может они есть на плате реле, не видно. Яш надеюсь, в этом случае релейная плата имеет отдельное питание.
Куда идёт плюс БП, в обход стабилизатора (+5V) или же на вход стабилизатора (VIN, +9V, USB разъём)? Если второй случай то меняйте, даже лучший экземпляр сверхэкономного стаба, полвольта а схавает.
Конденсаторы по питанию. мкФ много не бывает, но 6800 достаточно. Дроссель по питанию. Чем индуктивнее, тем хуже проходят помехи, соответственно тоже лишним не бывает, но 470 мкГн достаточно.
Каковы характерные признаки ложных срабатываний? Если они хаотичные и никак от времени не зависят - да, можно это списать на флуктуации питания и то что ключ (транзисторы в выходах, соответственно включающие оптопары [если таковые имеются], соответственно открывающие транзисторы релейной платы, включающие реле) выхватывает наносекундные помехи, ему заворачивает крышу и как следствие реле срабатывает. Однозначно тут не скажешь, что оно пик и заткнётся, пилик и снова заткнётся. Транзисторы в этих условиях (нечёткий уровень) могут защёлкиваться, отщёлкиваться. Простой пример: соберите инвертор/буфер на старой КМОП-микросхеме (561й серии например), к нему транзистор, к транзитору светодиод, а ко входу - длинный (см 10) кусок оголонного провода - и увидите что буфер/инвертор срабатывает (транзистор открывается) не только когда лапать провод пальцем. Более того он ещё и некоторое время держится включенным, это потому что у провода есть некая ёмкость, а наводка сообщает этому "конденсатору" заряд, которому нужно время чтобы стечь. В общем, чётких критериев, позволяющих оценить природу помехи, без осциллографа, нет.
Простейший осциллограф - достаточно яркий (например белый) светодиод. На глаз можно заметить импульс длиной по крайней мере 30 нс.
Если же. Хоть какая-то. Хоть самая беспалевная периодичность, а тем более с интервалами из условий - это всё, это точно порча окружения программы. Цепляете экран, сериал, какой-то логгер на SD и тупо мониторите всё. У вас могут повредиться цифры 8 и 30 в условии про 8:30 утра, у вас могут сдвинуться цифры, которые выдают часы.
Вами не указано, как устройство ведёт себя в дальнейшем после возникновения т. н. "ложных срабатываний", тут в теме слишком мало информации о работе в этом режиме. Продолжаются ли звонки по графику? Продолжаются ли бессистемные рандомные звонки. Есть ли у них характерное распределение во времени. Просто подождите как заглючит и понаблюдайте. А то непонятно. В общем и целом суть вопроса: сохраняется ли подобие штатного режима работы (время, интервалы), или же он портится полностью. Соответственно и методы лечения.
Не найдёте - выясняете максимально возможное время бесперебойной работы (например 2 с половиной часа), запускаете WDT (сторожевой таймер), плюс добавляете условие, перезагуржающее установку через каждое время, которое меньше вдвое и на порядок, то есть 150 минут минус ноль, пополам, равно каждые 7 минут это презагружать. При этом надо вести журнал поданных звонков, например в EEPROM. Чтобы подать звонок если прошляпили пока перезагружалось. Иных способов - ну блин я не знаю котаны, реально магия какая-то. Монтаж у вас не Петровича который бутылку у сожительницы отжал, в программе - ну негде виснуть. Не должно оно тупить, прям совсем никак. А ТЕМ более ТАК.
Upd. Я так не могу, поэтому это полотно у меня переписано. Красиво, но ЕвгенийП просил сходу ответы не выкладывать, так что дам подумать. А пока начну с занудства типа кривых отступов и слова Rele. Никто не будет против если поменять его на Relay.
Вот часть связанная с ардуино. Чуть позже Леша добавит силовую часть ящика(схему).
Куда идёт плюс БП, в обход стабилизатора (+5V) или же на вход стабилизатора (VIN, +9V, USB разъём)?
И что там реально БП выдает, мы не знаем.
До этого блока стоял блок на 6V и 300mA(Который питал через разъем для питания)
Ложные срабатывания были...
Может все дело в питании? Хотя какое-то время же он стабильно все замыкает и только потом начинаются ложные.
До этого блока стоял блок на 6V и 300mA(Который питал через разъем для питания)
Ложные срабатывания были...
Может все дело в питании? Хотя какое-то время же он стабильно все замыкает и только потом начинаются ложные.
6 вольт мало, надо минимум 7.5
И всё же: что именно не так?
1. Система не включает звонок, когда он нужен
2. Система включает звонок, когда он не нужен, на 8 секунд
3. Система вовремя включает звонон, но не на 8 секунд
4. Система включает звонок, когда он не нужен, на время, не равное 8 секундам. Короткое/длинное?
5. После неправильного звонка следующие отрабатываются верно7
6. Что-то ещё
??
Вопрос по первому рисунку: что это за реле такое? Это какой-то ардуиновский модуль? Можете показать его параметры или ссылку на него? Реле вы запитываете от самой ардуины а это есть не очень хорошо. Светодиоды включены не правильно. Для каждого из них нужен отдельный ограничивающий резистор. А сопротивление вашего резистора всего 1 Ом??? Оп-ля ... так у вас это лампы накаливания, а не светодиоды???? Схема включения светодиодов должна быть примерно такая:
О реле и питании самого ардуино поговорим позже ...
Пссс ... номиналы R1-R3 указаны не верно, должно быть в пределах 240 - 620 Ом
Да, реле- это модуль ардуино.
Про светодиоды знаю, что накосячил и нарисовал не так прошу за это прощения позже сообразил уже но не было возможности исправить
Так все-таки дайте ссылку на модуль реле
Модуль реле покупал Леша я не знаю его названия. Я ему написал, чтобы как только так сразу скинул ссылку.
А пока-что еще вопрос возник: можно ли ардуино уно дать 12V и 1250mA(Через круглый разъем для питания)?
А пока-что еще вопрос возник: можно ли ардуино уно дать 12V и 1250mA(Через круглый разъем для питания)?
Ну, судя по описанию, можно - http://www.farnell.com/datasheets/1682209.pdf - я рекомендовал бы 9В. , чтобы не перегружать ардуиновкий стабилизатор
Модуль реле нужно включать по этой схеме:
А пока-что еще вопрос возник: можно ли ардуино уно дать 12V и 1250mA(Через круглый разъем для питания)?
Если вы хотите попробовать потом снять такую мощность со стабилизатора (да и контактов платы), категорически не советую. Используйте штатный стабилизатор только для питания самой платы, ну может несколько светодиодов или малопотребляющих модулей (часы, барометр и т.п.)
//Попробуйте сменить алгоритм проверки например на такой. Скетч не проверял из за отсутствия DS
Прочитали на сайтах про питание ардуино, что при низком напряжении она может работать не стабильно, а у нас сейчас стоит блок питания выдающй 5V, хотя идеал: 9V. Мы решили провести эксперимент с ардуиной и дать ей не 5v, а 9(хотел попробовать через крону т.к. нет под рукой блока питания с таким напряжением, но крона очень быстро теряет свое напряжение, как только ее подключаешь к ардуине(просто ардуине, без светодиодов, реле, часов и т.д.) в итоге нашелся только блок питания на 12V и 1250mA. Пробовал подключать к своей ардуине, цепи питания не нагреваются(что в ящике, что у меня абсолютно одинаковые платы) в связи с этим хочу попробовать подсоединить этот блок питания( 12V который) к ящику на один день и посмотреть будут ложные срабатывания.
Стоит ли тратить на это время и могут ли начаться ложные срабатывания из-за недостатка питания?
P.S. Если в этом есть смысл и проблема решиться, тогда пойдем в магазин, и купим 9V блок питания с силой тока в 1A.