Помогите по модулю блютус

komandirada
Offline
Зарегистрирован: 06.12.2016

Добрый вечер. Собираю проект на ардуино и нуждаюсь в помощи. Мне нужно с модуля блютус считывать значение, есть коннект /нет коннекта. Заказанный модуль не имеет выхода key,но есть выход на котором дублируютсясигналы с диода состояния. Проблема в том, что оно постоянно мигает а к когда есть конспект то горит постоянно. Вот как раз вопрос и состоит в том, как отфильтровать мигания, чтобы оно воспринималось пардуинкой как логический ноль??? Я думаю что можно считывать скажем 3 секунды и при условии отсутствия напряжения, приравниватт значение к нулю. Но пока не знаю как этосделать. И есть еще вопрос, он наверно не со всем в этот раздел, но суть та же. Когда подключаюсь телефоном к своему hc-05 этот светодиод постоянно моргает, и загорается постоянно только если я например конекчусь к нему терминалом. Почему? Как сделать так чтобы соединение было постоянным, когда в зоне действия?

komandirada
Offline
Зарегистрирован: 06.12.2016

Я имел ввиду что нет пина statys а не key )))
Да и key нету, так что с aт командами пока тоже проблема

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

komandirada пишет:
Я имел ввиду что нет пина statys а не key ))) Да и key нету,
А что ж у него есть? Что хоть за модуль?

komandirada
Offline
Зарегистрирован: 06.12.2016
ivdor
Offline
Зарегистрирован: 06.06.2016

Самый простой метод, если LED прижимается к земле при моргании (можно проверить резистором и светодиодом, подключенным между +3.3 и выходом LED):

От выхода LED через 100кОм резистор (навскидку) подключен конденсатор 47мкФ (примерно).

Параллельно этому резистору ставим "резистор (1кОм) + диод (катодом в сторону LED)"

К этому же конденсатору подключается вход ардуины.

До тех пор, пока будут мигания, конденсатор будет разряжаться через 1кОм+диод быстрее, чем заряжаться через 100кОм, так и не дотягивая до лог.1.

Но надо проверить - прижимается ли к земле выход LED при мигании (а вдруг в Z-сост. переходит?)

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Понятно, что отличить мигание от немигания можно не сразу, а только через какой-то промежуток времени.

Только если в обычном случае этот промежуток примерно равен длине полупериода мигания, то в предложенном варианте - намного больше. Допустима ли такая большая задержка в определении факта мигания - решать ТС.

komandirada
Offline
Зарегистрирован: 06.12.2016

Хотелось решить вопрос программно. Просто пока только осваиваю програмирован ардуино. То есть нужен код, считывающий логическую единицу с пина на котором висит мигающий диод, и присваевающий некой переменной значение, только если длительность сигнала на пине больше заданного промежутка времени. Сам промежуток можно подобрать экспериментально.. На вскидку диод загорается 3 раза в секунду, и длительность замера, может быть всего 1 секунду.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ну так измеряете длительность сигнала и сравниваете результат с порогом.

ivdor
Offline
Зарегистрирован: 06.06.2016

Вариант еще проще - 7-8 раз в секунду проверять наличие нуля (по прерыванию таймера) - если хоть один "ноль" появится, значит коннекта нет.

Либо прерывание по "падающему фронту" сигнала.

komandirada
Offline
Зарегистрирован: 06.12.2016

Можно в виде кода посочь, как последние 2 варианта реализовать?

ivdor
Offline
Зарегистрирован: 06.06.2016

Второй вариант с кодом - http://arduino.ru/Reference/AttachInterrupt

Или другой пример - http://arduino.ru/Reference/PulseIn - тоже подойдет. Поставить ожидание "0" и 1сек времени.

С таймерами чуть более геморройно. Лучше сначала изучить их работу, пусть и без подробностей, а потом переходить к прерываниям: http://arduino.ru/Tutorial/Arduino_Interrupts

komandirada
Offline
Зарегистрирован: 06.12.2016

Спасибо. То что надо. Буду пробовать