ИК управление реле --- реле не реагирует
- Войдите на сайт для отправки комментариев
Пт, 19/07/2019 - 15:19
Я взялся за идею сделать ИК управление реле и вот мой план действий:
1) Скачал IRremots и нашёл кнопку
2) Написал и загрузил скетч
#include "IRremote.h" IRrecv irrecv(2); decode_results results; int rele=0; void setup() { pinMode(5,OUTPUT); Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if(irrecv.decode(&results)) { Serial.println(results.value, HEX); if(results.value==0x2CE9&&rele==0) { digitalWrite(5,HIGH);rele=1;results.value; } if(results.value==0x2CE9&&rele==1) { digitalWrite(5,LOW);rele=0;results.value; } irrecv.resume(); } }
3) Подсоеденил фотоприёмник и реле, а реле не реагирует
Заранее спасибо
Реагирует, только Вы заметить не успеваете. Вы ж его включаете в строке 25 и немедленно, сразу же выключаете в строке 30.
А как проверить это, чтобы точно уж убедится?
Вставьте перед строками 25 и 30 вывод в сериал чего-нибудь, только разного (например, "#25" b "#30") и убедитесь, что срабатывают обе печати.
Так нет, там же он фиксирует своё состояние?
Ой, в этом то и ошибка, мне нужно зафиксировать состояния переключения, а у меня там этого не прописано. Если после 25 и 30 строчек поставить delay(2CE9); - Сработает?
С какого перепугу? Чем Вам делэй-то поможет?
Поставьте else в начале строки №28. Нафига её проверять, если предыдущее условие уже сработало?
И ещё, не знаю зачем Вы написали хвосты "results.value;" в строках 25 и 30. Они не делают ничего от слова совсем. Убирайте.
Всё, исправил ошибку - else:
Нужно - else
Но реле попрежнему не щелкает
Не исправили, а новую внесли. Вы вообще, понимаете, что Вы пишете?
Я же Ва по-русски написал "Поставьте else в начале строки №28" , а Вы поставили его вместо строки 28.
И ещё, если "не щёлкает", то во-первых, вставьте печати о которых я Вам писал, а во-вторых, покажите мне, что печатает.
Хорошо, сейчас попробую
Так, во что у меня получилось:
Ой, я сейчас попробовал заменить пульт и синхронизировать его кнопку:
В итоге сириал отвечает(+ я теперь слышу что реле щёлкает):
Он щёлкает, но не могли бы дать совет, как сделать чтобы он фиксировался?
Нужно просто устранить дребезг?
А как он щелкает? Один раз нажмёшь кнопку и потом постоянно? Или Вы каждый раз кнопку нажимаете, чтобы сработало. Опишите подробно, я же не вижу ничего.
Нажимаю каждый раз чтобы сработала
Также когда нажимаю на кнопку, реле щёлкает и загорается светодиод и сразу тухнет вместе с реле
Т.е., одно нажатие выгляти как два? Правильно?
Да, забыл сказать, этот светодиод находиться на самом реле и он при одном нажатии загорается только один раз
Посмотрите, я попробовал накидать скетч что бы избавиться от дребезга(правда компилятор выдаёт ошибку) :
Да, забыл сказать, этот светодиод находиться на самом реле и он при одном нажатии загорается только один раз
А что ещё Вы забыли сказать? Давайте так не шутить.
И всё-таки, сколько же раз включается реле от одного нажатия?
В общем, так, приводите текущий скетч и выдачу в монитор (точно как в посте #12) только в выдачу добавьте вставки в тех местах, где Вы нажжимаете кнопки. Чтобы я понимал когда и что происходит.
Открыл скетч, но не понял что означает выдача
не понял что означает выдача
То, что он выдаёт, типа вот этого
А что Вы имеете ввиду под монитором? Если монитор порта, то туда скетч не загружается
Так, когда скетч работает, он в монитор порта что-то печатает?
Мне нужен свежий текст скетча и тект того, что печатает в монитор порта. В последнем (в тексте печати) нужно вставить пометки в какие моменты Вы нажимали кнопку, чтобы я понимал что печатаеся между нажатиями.
КОД :
ПОРТ:
Вообще-то не должно быть, т.к. resume вызывается, но чтобы уж окончательно развеять сомнения, давайте так.
После строки №35 вставьте строку
results.value=0;
Если ничекго не изменится, то скорее всего дребезг.
Проверьте. Если вдруг поможет, то и хорошо
Да, кстати почему так? Сам только сейчас это подметил.
Как она сама автоматически выключается за миллисекунды, при это я делаю одно нажатие на кнопку и происходит одно мигание светодиода, а в тексте порта сигнал 55AA14EB подаётся 2 раза - включить( я нажимаю) и выключить (какая то неведомая сила)
Я тут не перепутал случайно ничего?)
Сначала обрадовался аж закричал - "УРА!!!!", но потом при повторном нажатии обратно мигает, стал тыкать, тыкать и увидел, что переодически получается фиксировать состояние, но намного больше миганий, нужно тыкнуть раз 10-20, и то не факт, что получится
Что подскажите делать в такой ситуации?
Может так,
но без антидребезга работать будет не стабильно
А как сделать анти дребезг? С функцией debounce() ?
Может так,
Попобовал, вначале получилось, но потом перестала вообще принимать сигналы
Ябы на Вашем месте сначала логику отработал на кнопке примерно так
а когда все получится и к логике не будет вопросов, подключал пульт и тогда былобы ясно где проблема
Я немного не понял Вас, а что значит отработать логику на кнопке?
Что тут подразумевается под кнопкой?
К стати - на копке также отработать и антидребезг
Ну вот выше я привел тот же самый код но вместо пульта поставил кнопку (какбы имитация пульта) на #define but1 2 и при нажатии этой кнопки - имитировалось нажатие на пульте
А bool это сокращение boolean?
Пробовал в Web найти, но там ничего не написано
Читаю и удивляюсь.
ГРТ, у Вас на пульте только одна кнопка работает?
Вот рабочий скетч на три реле с возможностью дальнейшего развития! Выключение всех релюшек происходит специальной кнопкой!! Повторные нажатия на кнопку с номером канала - включают/отключают соответствующую релюху.
В теме есть скетч по-проще, выбирайте
Как Вы и сказали и начал отрабатывать логику с самого начала. Я решил поделить логику на "Код и сборка(без подсказок)" и "Алгоритм действий", и также поделил на следующие темы:
1) Кнопка(стандартная схема с кнопкой, светодиодом и стягивающим резистором)
2) Кнопка + антидребизг
3) ИК управление(кнопкой)
4) ИК управление(кнопкой)+антидребизг
Я принился за первую тему(алгоритм я решил писать в начале как многострочный коментарий):
В итоге код написал правильно, схему собрал правильно( я её сверил ), но тут то и обнаружилась проблема светодиод,после нажатия кнопки, работает с ОГРОМНЫМ опозданием, а дело в том, что такие же проблемы наблюдались и с прошлой Ардуино Уно, а эту я купил сегодня специально для того, чтобы быть уверенным, что все детали исправны(я ещё купил и второй фотоприёмник)
Покупал я в магазине специализирующемся на радио-деталях и как Вы думаете, мне продали "брак" или проблема в чём-то другом?
Вот рабочий скетч на три реле с возможностью дальнейшего развития!
А где здесь вставлять пин реле и сигнал кнопки от пульта?
В итоге код написал правильно,
Ну, строго говоря, правильный код должен выглядеть примерно так:
но тут то и обнаружилась проблема светодиод,после нажатия кнопки, работает с ОГРОМНЫМ опозданием, а дело в том, что такие же проблемы наблюдались и с прошлой Ардуино Уно, а эту я купил сегодня специально для того, чтобы быть уверенным, что все детали исправны
ОГРОМНОЕ - это не технический термин. Совершенно непонятно, что именно Вы под ним подразумеваете. Одну мкс? Одну мс? Один час? Один год?
(я ещё купил и второй фотоприёмник)
Покупал я в магазине специализирующемся на радио-деталях и как Вы думаете, мне продали "брак" или проблема в чём-то другом?
Фотоприемники бывают разной конструкции, при этом время срабатывания у них может различаться на порядки. Да и в схеме можно накосячить, поэтому без конкретных данных сделать какое-либо заключение не представляется возможным.
Как Вы и сказали и начал отрабатывать логику с самого начала. Я решил поделить логику на "Код и сборка(без подсказок)" и "Алгоритм действий", и также поделил на следующие темы:
1) Кнопка(стандартная схема с кнопкой, светодиодом и стягивающим резистором)
2) Кнопка + антидребизг
3) ИК управление(кнопкой)
4) ИК управление(кнопкой)+антидребизг
Я принился за первую тему(алгоритм я решил писать в начале как многострочный коментарий):
Как по мне то решение Вы приняли Очень даже правельное (если хотите научиться а не спрашивать про про все подряд. Да еще и увидите что это очень ИНТЕРЕСНО) По поводу кода, задержек быть не должно. Проверте схему, поменяйте пины. И еще желательно освоить "Протеус" _ это эмулятор ардуино и в нем отлаживать все свои проэкты, очень удобно.
Вот рабочий скетч на три реле с возможностью дальнейшего развития!
А где здесь вставлять пин реле и сигнал кнопки от пульта?
цитируемый Вами скетч предназначен для проверки кнопок Вашего пульта! IR-датчик подключается к пину 2 !
Я выложил Вам ссылку на другой пост, №5 в указанной теме. Открыть текст скетча сможите? :)
072
byte
C1 = 4;
//пин канала №1
073
byte
C2 = 5;
//пин канала №2
074
byte
C3 = 6;
//пин канала №3
Тему предлогаю перенести в Песочницу!
[quote=andriano]
ОГРОМНОЕ - это не технический термин. Совершенно непонятно, что именно Вы под ним подразумеваете. Одну мкс? Одну мс? Один час? Один год?
[quote]
Задержка в диапозоне 1-3 минуты
NikShel, спасибо за скетч! Но к сожалению пока не смогу его проверить из-за проблем с Ардуино
vosara, спасибо! Я постараюсь скинуть фото схемы
Загрузите стандартный БЛИНК и посмотрите частоту мигания диода - должно быть 1 раз в секунду
Хорошо, сейчас попробую