различные пульты 433МГц
- Войдите на сайт для отправки комментариев
Ср, 12/08/2015 - 10:09
Доброе время суток, форумчане!
Может кто подскажет, как сделать следующий трюк:
Есть несколько пультов для радиоприемника 433МГц, но работают они с разными библиотеками. Один пульт понимает RCSwitch, второй NewRemoteSwitch. И та и другая библиотека используют прерывание 0 на pin2, говорящее о том, что приемник что-то поймал. Вопрос заключается в том, как заставить обе библиотеки работать одновременно на одном прерывании.
https://bitbucket.org/fuzzillogic/433mhzforarduino/wiki/Home
Вот здесь есть описание библиотеки InterruptChain, которая как раз этим и занимается, но я не понимаю, как ее подружить с RCSwitch, там разная система инициализации.
Буду рад любым комментариям
Во-первых, спасибо за такую клевую штуку.
Во-вторых, судя по тому, что написано в описании, для ваших целей подойдет поддерживаемая InterruptChain библиотека RemoteSwitch.
Я тоже так думал, но по непонятной мне причине не работает RemoteSwitch. Причем не с китайским пультом от люстры, ни с пультом от RBG-ленты. Попробую еще поколдовать, может чего не так сделал.
А RCSwitch с этими пультами работает? Я как-то столкнулся с какой-то RGB-штуковиной, так в итоге потом руками ее сигнал перерисовывал (нужно было имитировать передатчик), потому что RCSwitch эту штуку в упор не видел.
работает только с RGB-пультом
то есть полезть внутрь библиотек и спарить их извращеным способом. сделать из 2 одну, не предлагать?
такое кунг-фу пока не для меня)))))
Кажется, небольшая варварская модификация RCSwitch позволяет вытворять, то что вы так хотели. Правда, после этого библиотека будет работать только в связке с InterruptChain, и никак иначе.
Если интересно, то технология такая:
1) Открываете RCSwitch.cpp
2) Ищете в нем строку
#include "RCSwitch.h"
добавляете (выше или ниже, неважно)
4) В скетчах инициализация и работа с RCSwitch никак не меняется - как было в стандартных примерах библиотеки, так и остается все.
Что до секрета, то никакого секрета здесь нет. Просто автор InterruptChain так сам и пишет, что "The callback is of the same type as Arduino's standard attachInterrupt(). So, instead of attachInterrupt(0, callback, LOW); you can use InterruptChain::addInterruptCallback(0, callback);".
Т.е. стандартная процедура вызова обработчика прерывания подменяется на таковую из InterruptChain. И этим можно спокойно пользоваться.
Ну и на случай, если я что-то не так написал или забыл, и вот библиотека и скетч-пример, которые были проверены на Arduino Mega 2560 с приемником на втором цифровом пине (прерывание 0).
Из имеющихся библиотек у меня только пульты под RCSwitch, но при нажатии кнопки скетч выводил интерпретацию сигнала пульта сразу по двум разным библиотекам (в том числе и RCSwitch), из чего я делаю вывод, что эта штука все же как-то работает.
Проверяйте.
spc - спасибо большое!!!!!!
буду пробывать, о результатах напишу!!!
Наконец руки дошли до модернизации моего проекта. Спасибо огромное spc за предоставленную модернизированную библиотеку. Все работает как часы. Использую два разных пульта, один от COCO второй NoName от светодиодной ленты, сигнал принимается от обоих пультов!!!
Еще раз спасибо!!!!
Доброе время суток!!!
Подниму опять тему, хотя уже немного в другом ключе
Библиотека RCSwitch использует прерывание 0 на pin2. У меня в проекте используется еще прерывание 1 на pin3 для организации диммирования переменного напряжения. В основном код взят отсюда http://cyber-place.ru/showthread.php?t=525
Заметил, что лампочка немного мигала при диммировании, но сначала не обратил на это внимание, но после того, как подключил в люстре - такой дребезг стал вымораживать, начал разбираться, и понял, что дребезг появляется после такой строки
Что делать, ума не приложу, вроде это разные прерывания, разные пины, но какая-то связь есть. Даже если отключаю pin2 дребезг сразу прекращается.
Может у кого есть мысли на этот счет??
имеется пульт, кто знает с какой библиотекой она работает. бл... как сюда фото вставить и какое еще ctrl V. пульт универсальный перекодируемый. 4 кнопки.