Проблема с работоспособностью
- Войдите на сайт для отправки комментариев
Пнд, 12/08/2019 - 21:15
Скетч работает некоректно. Помогите разобратся
При поднисении правильной РФИД метки должен проворачиватся сервомотор и влючатся два реле, а при нажатии на кнопку сервомотор должен возвращатся в ноль а реле выключатся.
А у меня кнопка и реле не работает.
........................
вставьте код по правилам форума
Это как?
Условие в строке №42 ВСЕГДА ложно, потому строки №№44-51 не работают никогда.
В строке 42 я использую 2 номера моих РФИД карт вместо нолей. Система считивает и поворачивает сервомотор на 90 градусов.
А дальше не работает реле не работают и кнопка на закритие тоже не реагирует
Не работает со строки 46
Виноват, невнимательно посмотрел. На самом деле, вторая часть условия ложна. - "or 000". Т.е. условие в строке №42 истинно только огда, когда "uidDec == 0000000000", or и всё, что дальше - в пользу бедных.
В строке 42 я использую 2 номера моих РФИД карт вместо нолей. Система считивает и поворачивает сервомотор на 90 градусов.
А дальше не работает реле не работают и кнопка на закритие тоже не реагирует
Ну Вам же написали, что ерунда в этой строке написана. Откуда только все такую запись берут?
Надо if (uidDec == xxxx or uidDec == yyyy) ...
Не знаю где вы нашли ерунду но обе карты считываются и поворачивают сервомотор
В строке 42 я использую 2 номера моих РФИД карт вместо нолей. Система считивает и поворачивает сервомотор на 90 градусов.
А дальше не работает реле не работают и кнопка на закритие тоже не реагирует
Ну Вам же написали, что ерунда в этой строке написана. Откуда только все такую запись берут?
Надо if (uidDec == xxxx or uidDec == yyyy) ...
вроде у него короткая запись того же самого. Только не знаю «or» в Си вообще применяется? (Вроде так - ||)
Не знаю где вы нашли ерунду но обе карты считываются и поворачивают сервомотор
не надо спорить, в строке 42 написана ерунда, не соответвующая правилам синтаксиса.
Вы же сюда пришли спрашивать? - так слушайте, что вам отвечают. А если уверены, что знаете лучше - решайте свои проблемы сами.
вроде у него короткая запись того же самого.
А она допустима?
Только не знаю «or» в Си вообще применяется? (Вроде так - ||)
Применяется.
Не знаю где вы нашли ерунду
В строке №42
Я правильно понимаю, что в реальности там не нули? Нули это Вы нам подсунули, чтобы мозги запудрить? Тем более, что на соседнем форуме у Вас
И нафига Вы нам другое суёте? Реально, чтобы потроллить или Вы разницы между нулём и не нулём не понимаете?
В таком случае, моё замечание становится "наоборот" - условие в строке №42 истинно всегда - для любой карты. Если так, то у Вас действительно
обе карты считываются
и не только обе, а ещё 100500 других, и вообще - любая. Поскольку выражение "or 4786935279" означает "всегда истинно"
Не знаю где вы нашли ерунду но обе карты считываются и поворачивают сервомотор
Напишите там
if
((uidDec == 1475896523) || (
uidDec == 4786935279)) ... чтобы никто не докопался :)Далее у вас
Первое же условие выполняется только если flag == 1, но во всем остальном коде программы вы flag = 1 не делаете - получается этот кусок кода не выполняется. Вангую, что вы хотели тут изобразить контроль нажатия и последующего отпускания кнопки (и только по отпусканию должно что то произойти) - так ?
Morroc - да там еще куча ошибок, например посмотрите на строку 51...
по коду и общению в форуме видно. что автор в теме Ардуино абсолютно деревянный. И слушать никого не хочет, уверен. что у него все и так правильно, только кнопка "почему-то" не срабатывает :)
Он на этот форум уже обиделся и ушел на другой, но и там тупит безмерно...
Не знаю где вы нашли ерунду но обе карты считываются и поворачивают сервомотор
Напишите там
if
((uidDec == 1475896523) || (
uidDec == 4786935279)) ... чтобы никто не докопался :)Далее у вас
Первое же условие выполняется только если flag == 1, но во всем остальном коде программы вы flag = 1 не делаете - получается этот кусок кода не выполняется. Вангую, что вы хотели тут изобразить контроль нажатия и последующего отпускания кнопки (и только по отпусканию должно что то произойти) - так ?
Да по отпусканию должен повернутся серво в ноль. И викльчится реле
Значит проверяейте логику работы с этим flag, ну и со строкой 51 разберитесь действительно :)
Подправил код. Реле тепер вкючаэтся. А с кнопкой по прежнему не могу разобратся. Может кто то помочь?
Когда подношу карточку. Серво поворачивается и реле включается. А кнопка не реагируэт.
При нажатой кнопке подношу карточку Серво поворачивается и реле включается и через секунду возвращается обратно.
Как сделать чтобы Возвращалось назад сервомотор и виключалось реле после отпускания кнопки без карточки?
Влючить карточкой а выключить по отпускании кнопки.
STALKER7538 - опишите простыми словами, что серва и кнопка должны отпирать и запирать, а то пока непонятно, зачем тут кнопка вообще.
RFID ключ должен повернуть серву и включить реле. После включения реле подается питание на плату управления. После начала работы платы управления поступает отрицательний сигнал на кнопку. И когда сигнал прекратится серва и реле должны вернутся в исходное состояние.
по РФИД включаем зажигание и бензонасос, нажимаем кнопку "Старт", заводимся - правильно понимаю? зачем же при отпускании кнопки бензонасос выключать, все заглохнет...
В принципе правильно что бы при виключении зажигания сново становилась на охрану.
Вооще мне это на катер нужно. Но принцип такой же.
В принципе правильно что бы при виключении зажигания сново становилась на охрану.
Вооще мне это на катер нужно. Но принцип такой же.
То есть все время, пока катер работает - надо кнопку держать? Или кнопка это не запуск, а зажигание?
Ну. честно говоря. я все равно не понял, как оно должно работать. Может другие окажутся понятливее.
Кнопка это отпицательний сигнал с зажигания. Когда зажигание выключить сигнал пропадает и система должна вернутся в истодное состояние
Вы знаете в чем проблема с работоспособностю?
памойму, тут проблема с алгоритмической логикой, а не с работоспособностью.
Почему если удалить строки с RFID то кнопка работает как положено?
Почему если удалить строки с RFID то кнопка работает как положено?
ПОТОМУ ЧТО СТРОКИ 38-39 не дают добраться до чтения кнопок если карточки нет
Когда подношу карточку. Серво поворачивается и реле включается. А кнопка не реагируэт
А вы через полсекунды после поворота сервы нажмите и держите.
При нажатой кнопке подношу карточку Серво поворачивается и реле включается и через секунду возвращается обратно.
Именно так у вас программа и написана (и если кнопка при нажатии подает HIGH на ногу, чаще подключают к земле - тогда по идее должно быть LOW при нажатии, но вам виднее).
Как сделать чтобы Возвращалось назад сервомотор и виключалось реле после отпускания кнопки без карточки?
Влючить карточкой а выключить по отпускании кнопки.
Сделать отдельно работу с карточками и отдельно работу с кнопкой, а не вкладывать одни условия в другие.