Arduino + RGB контроллер, подключение через "провод"

kilroy
Offline
Зарегистрирован: 04.06.2013

Приветствую форумчане!

Имеется: Arduino Mega + RGB контроллер с ИК пультом и ИК приемником на контроллере соответственно.
Нужно избавиться от ИК и подключить контроллер Ардуино напрямую к RGB контроллеру, при этом хотелось бы использовать один Пин для сигнала.
Данные сигнала поступают примерно в таком виде "80B098E2"(включить красный цвет, синий, выключить и т.п.).

Как бы мне передать от Цифрового Пина Арудино данные(грубо эмитировать сигнал с ИК пульта) на RGB контроллер через проводочек, а не через ИК приемник?
Роюсь целый день, ничего подобного не нашел...Это вообще возможно?

Спасибо за отклики.
 

 

maksim
Offline
Зарегистрирован: 12.02.2012

Возможно, но бессмысленно, поэтому ничего и не нашли. Почему именно по проводу? и почему именно по одному?

kilroy
Offline
Зарегистрирован: 04.06.2013

Хорошо, расскажу детальней.
У меня 7 RGB контроллеров, у каждого 3х цветная светодиодная лента. Мне нужно управлять каждым цветом по отдельности.
Если подключать без контроллера, получается что на каждую ленту будет задействованно 3 Пина. Итого будет 21 Пин задействован. Я хочу сократить это кол-во до 7 пинов. RGB контроллер уже в свою очередь управляет 3мя цветами с помощью команд, которые через ИК посылает. 

Вариант подключения к каждому из 7ми Пинов ИК передатчика отпадает, тогда будут сигналы путаться и включатся сразу на всех RGB контроллеров от одной команды...

Ну просто по проводу более логичнее и проще делать.
Я не гуру в транзисторах, резисторах и т.п. - есть общее представление.

Самое главное что этих RGB контроллеров может быть и 20 штук.

Какие еще могут быть варианты управления, так что бы одной 3х цветной лентой управлять с 1 Пина?

Snubist
Offline
Зарегистрирован: 18.02.2013

Ну если посмотреть отстраненно, то ик светодиод пульта + и ик фотодиод приемника, есть простейшая оптопара. Только не в одном корпусе а разнесенная.

Так что берешь дуину, подцепляешь икфотодиод, и запоминаешь или еще лучше декодируешь сигнал пульта (помоему можно библиотекой IRemote).После чего вместо ик фотодиода контроллера ленты ставишь выход оптопары, и управлешь ей одним пином посылая команды записанные или декодированные ранее.

Я бы так мучать стал, может кто чего и поумнее подскажет.

maksim
Offline
Зарегистрирован: 12.02.2012

Не так все просто. ИК-приемники это не обычные фотодиоды, они цифровые и демоделируют сигнал. Поэтому во-первых, просто убрать ИК-приемник и ИК-светодиод и заменить их оптроном не получится. Во-вторых IRemote может генерить сингал только на одном из 2 выводах.

Так как переписать библиотеку под свои нужды вы не в силах, то в вашем случае остается разве что следующее:
 
Берете библиотеку IRemote и организуете управление одного контроллера. Затем к каждому контроллеру крепите свой ИК-светодиод (лучше маломощный) так что бы каждый светодиод не засвечивал соседний контроллер. Потом подключаете все аноды светодиодов через резистор к 3 выводу (на УНО это вывод, на котором IRemote генерит сигнал), а катоды не к земле, а к другим выводам дуины так что бы каждый катод был подключен в своему выводу. После чего вы сможете управлять каждым контроллером отдельно выбирая нужный ИК-светодиод низким уровнем на его катоде.

kilroy
Offline
Зарегистрирован: 04.06.2013

Snubist

Мне тут обьяснили детально, что надо делать что бы все это дело через провод пустить, это просто жесть, мне кажеться проще пентагон взломать) 

maksim
Чорт, у меня была идея такая же, только не знал как ее правильно реализовать, спасибо, попробую!

leshak
Offline
Зарегистрирован: 29.09.2011

maksim пишет:

Не так все просто. ИК-приемники это не обычные фотодиоды, они цифровые и демоделируют сигнал. Поэтому во-первых, просто убрать ИК-приемник и ИК-светодиод и заменить их оптроном не получится. Во-вторых IRemote может генерить сингал только на одном из 2 выводах.

А почему не получится? IMHO именно поэтому и может "выйти просто". Если выкинуть ИК-приемник и подпаятся вместо его DATA-выхода? Тогда отпадает необходимость "демодуляции", а значит и "модуляции" со стороны ардуины. Можно слать импульсы "в чистом виде". Хоть обычным digitalWrite/delay на любом пине. А значит IR-ремоте нужна будет только на этапе "сграбить коды пультов" .

Если с настоящими пультами "все работает одновременно" (три пульта, три приемника) - значит коды у них отличаются. Если они друг-другу не мешают - значит умеют делить между собой "общий эфир". А значит и с ардуины, для всех них можно гнать коды "по общему проводу".

Правда "ровно один провод" все равно не выйдет. Еще земля потребуется. Ну и расстояние (длина провода) может  сыграть рояль.

Но все это, конечно, теория.  Нужно пробовать.

leshak
Offline
Зарегистрирован: 29.09.2011

Как на меня, то тут IRRemote обойдется подправить "малой кровью".

Нужно пронаследоваться и оверрайднуть, благо они virtual (или похачить их прямо в библиотеке) две функции

void IRsend::mark(int time) {
  // Sends an IR mark for the specified number of microseconds.
  // The mark output is modulated at the PWM frequency.
  TCCR2A |= _BV(COM2B1); // Enable pin 3 PWM output
  delayMicroseconds(time);
}

/* Leave pin off for time (given in microseconds) */
void IRsend::space(int time) {
  // Sends an IR space for the specified number of microseconds.
  // A space is no output, so the PWM output is disabled.
  TCCR2A &= ~(_BV(COM2B1)); // Disable pin 3 PWM output
  delayMicroseconds(time);
}

 

Только вместо включения, выключения PWM-ма, нужно просто ставить какой-нибудь пин в LOW/HIGH. А сам пин - проводком туда куда подключается ИК-Приемник.

kilroy
Offline
Зарегистрирован: 04.06.2013

Ну вообщем у меня была примерно такая же теория.
Сейчас пока сделаю простую схему с реле.
Как будет время обязательно поэксперементирую.

maksim
Offline
Зарегистрирован: 12.02.2012

Так вот именно в этом из наключалость "Не так все просто" и "не получится просто соединить" - так как надо редактировать библиотеку. 

leshak пишет:

Если с настоящими пультами "все работает одновременно" (три пульта, три приемника) - значит коды у них отличаются. Если они друг-другу не мешают - значит умеют делить между собой "общий эфир". А значит и с ардуины, для всех них можно гнать коды "по общему проводу".

Правда "ровно один провод" все равно не выйдет. Еще земля потребуется. Ну и расстояние (длина провода) может  сыграть рояль.

Но все это, конечно, теория.  Нужно пробовать.

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