Привет всем, Проект для больничной палаты. В палате имеется телевизор самсунг, пульт постоянно исчезает. Нужно управлять телевизором с системы вызова медсестры. Имеется одна свободная кнопка. Алгоритм: при первом нажатии кнопки включается телевизор, при последующем переключает канал Р+, при длительном нажатии выключается. Телевизор включается при нажатии Р+ Нужно при коротком нажатии подать ик сигнал Р+, при длинном Выкл.
Палата №6?)) Не проще ли будет (и дешевле) купить несколько дистанционок и привязать их на веревочки, не?
на 100 процентов поддерживаю пульт бу копейки, а увязать телевизор с системой вызова медсестры ещё тот геморррррррр
Дешовые Пульты нельзя использовать в целях гигиены. Пульт должен легко дезинфецироваться, а такой пульт стоит около 20 евро. Потом постоянные проблемы с установкой кода, батарейки и тд. На счёт увязки с системой вызова нет никаких проблем. Старый деревянный ящик был уже связан. Старый ящик выбросили, повесили самсунг, и каждому пациенту дали пульт. Речь идёт о 50ти Телевизорах и 150ти пультах (3 пациента в палате), и это ещё не вся больница. Ссылка на пульт. http://www.ruwido-consumer.com/hospitality/healthcare/
Кнопка должна имитировать пульт? В том смысле что где то выводится ИК излучатель и управляется от кнопки, я правильно понимаю? Или управление проводное к самому телевизору?
Раньше было проводное. За телевизором имеется розетка для подключения звука и управления. Планируется за телевизором повесить ардуино с излучателем. Телевизор вскрывать не хочется из за гарантии. Звук подключен через наушники. Система вызова имеет свой усилитель с гальванической развязкой.
На телевизоре излучатель не нужен, разве что впритык к приемнику, чтобы наверняка. Звук вообще никак не участвует в процессе. Остальное дело квалификации и нескольких дней работы.
Именно впритык. Звук для общей картины. Нужно подобное устройство http://arduino-project.net/universalnyj-pult-arduino/ переточить под мои нужды. Убрать блютуз и отправлять команды с кнопки. Я думаю что коды я смогу сам считать. Вот реализовать короткое и длинное нажатие для меня пока сложно. Я жду железо, когда придёт тогда отпишусь чего сам смог.
Всем привет, Железо пришло. Коды считал. IRrecvDump Power E0E040BF E0E040BF (32 bits) Raw (76): 1016 4500 -4350 600 -1650 550 -1650 600 -1600 600 -550 550 -550 550 -550 550 -600 550 -550 550 -1600 600 -1650 550 -1650 550 -600 550 -550 550 -550 550 -550 600 -550 550 -550 500 -1650 600 -550 550 -550 600 -550 550 -550 550 -550 550 -550 550 -1650 550 -600 550 -1600 600 -1600 600 -1650 550 -1650 600 -1600 600 -1650 550 -600 550 -550 550 -550 550 -550 550 P+ E0E048B7 E0E048B7 (32 bits) Raw (76): 2606 4500 -4400 550 -1650 600 -1600 600 -1650 550 -600 500 -600 550 -550 550 -550 550 -550 550 -1650 550 -1650 600 -1600 600 -550 550 -600 500 -600 550 -550 550 -550 550 -550 550 -1650 550 -600 550 -550 550 -1600 600 -550 550 -600 500 -600 500 -1650 600 -550 550 -1650 550 -1650 600 -550 550 -1650 550 -1650 550 -1650 600 -550 550 -550 550 -550 550 -600 500 IRrecvDumpV2 Power Encoding : SAMSUNG Code : E0E040BF (32 bits) Timing[76]: -31324 +4500, -4400 + 550, -1650 + 600, -1600 + 600, -1650 + 600, - 500 + 550, - 600 + 550, - 550 + 550, - 550 + 550, - 550 + 550, -1650 + 600, -1600 + 600, -1600 + 600, - 550 + 600, - 500 + 600, - 500 + 600, - 550 + 550, - 550 + 550, - 550 + 550, -1600 + 600, - 550 + 600, - 550 + 550, - 550 + 550, - 550 + 550, - 550 + 600, - 500 + 600, -1600 + 600, - 550 + 550, -1600 + 600, -1650 + 600, -1600 + 600, -1600 + 600, -1650 + 550, -1650 + 600, - 550 + 550, - 550 + 550, - 550 + 600, - 500 + 600, unsigned int rawData[77] = {54366, 90,88, 11,33, 12,32, 12,33, 12,10, 11,12, 11,11, 11,11, 11,11, 11,33, 12,32, 12,32, 12,11, 12,10, 12,10, 12,11, 11,11, 11,11, 11,32, 12,11, 12,11, 11,11, 11,11, 11,11, 12,10, 12,32, 12,11, 11,32, 12,33, 12,32, 12,32, 12,33, 11,33, 12,11, 11,11, 11,11, 12,10, 12,0}; // SAMSUNG E0E040BF unsigned int data = 0xE0E040BF; P+ Encoding : SAMSUNG Code : E0E048B7 (32 bits) Timing[76]: -388 +4500, -4400 + 550, -1650 + 600, -1600 + 600, -1650 + 550, - 550 + 600, - 550 + 550, - 550 + 550, - 550 + 550, - 550 + 550, -1650 + 600, -1600 + 600, -1600 + 600, - 550 + 550, - 600 + 500, - 600 + 550, - 550 + 550, - 550 + 550, - 550 + 550, -1650 + 550, - 600 + 550, - 550 + 550, -1650 + 550, - 550 + 550, - 600 + 500, - 600 + 550, -1600 + 600, - 550 + 550, -1650 + 550, -1650 + 600, - 550 + 550, -1600 + 600, -1650 + 550, -1650 + 600, - 550 + 550, - 550 + 550, - 550 + 550, - 600 + 500, unsigned int rawData[77] = {22290, 90,88, 11,33, 12,32, 12,33, 11,11, 12,11, 11,11, 11,11, 11,11, 11,33, 12,32, 12,32, 12,11, 11,12, 10,12, 11,11, 11,11, 11,11, 11,33, 11,12, 11,11, 11,33, 11,11, 11,12, 10,12, 11,32, 12,11, 11,33, 11,33, 12,11, 11,32, 12,33, 11,33, 12,11, 11,11, 11,11, 11,12, 10,0}; // SAMSUNG E0E048B7 unsigned int data = 0xE0E048B7; Подскажите как мне их отправить? Как отправлять NEC коды мне понятно, опробовал, получилось.
Привет всем, Разобрался сам Код (Text): #include <IRremote.h> IRsend irsend; unsigned long a; long previousMillis = 0; int val=0; int flag=0; void setup() { Serial.begin(9600); Serial.setTimeout(4); digitalWrite(2,HIGH); } unsigned int A_pow[68]={4600,4350,700,1550,650,1550,650,1600,650,450,650,450,650,450,650,450,700,400,700,1550,650,1550,650,1600,650,450,650,450,650,450,700,450,650,450,650,450,650,1550,700,450,650,450,650,450,650,450,650,450,700,400,650,1600,650,450,650,1550,650,1600,650,1550,650,1550,700,1550,650,1550,650}; unsigned int A_vdown[68]={4600,4350,700,1550,650,1550,700,1500,700,450,650,450,700,400,700,400,700,400,700,1550,700,1500,700,1550,700,400,700,400,700,400,700,450,650,450,650,1550,700,1500,700,450,650,1550,700,400,700,400,700,450,700,400,700,400,700,400,700,1550,700,400,700,1500,700,1500,700,1550,700,1500,700}; unsigned int A_vup[68]={4600,4350,650,1550,700,1500,700,1550,700,400,700,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,400,700,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,400,700,450,700,400,700,400,700,400,700,450,650,450,650,450,650,1550,700,1500,700,1550,700,1500,700,1550,650}; unsigned int A_pdown[68]={4650,4300,700,1550,700,1500,700,1550,700,400,700,400,700,400,700,450,650,450,650,1550,700,1500,700,1550,700,400,700,400,700,400,700,450,700,400,700,400,700,400,700,450,650,450,650,1550,700,400,700,450,650,400,700,1550,700,1500,700,1550,700,1500,700,400,700,1550,650,1550,700,1500,700}; unsigned int A_pup[68]={4600,4350,700,1500,700,1500,700,1550,700,450,650,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,450,650,450,700,400,700,400,700,400,700,400,700,1550,700,400,700,400,700,1550,650,450,700,400,700,400,700,1550,650,450,650,1600,650,1550,650,450,700,1500,700,1500,700,1550,650}; void loop() { if (Serial.available() > 0) { int x = Serial.read(); if (x == 97) { irsend.sendRaw(A_pow,68,38); delay(40); } if (x == 98) { irsend.sendNEC(0x807FA857, 32); delay(40); } if (x == 99) { irsend.sendRaw(A_vup,68,38); delay(40); } if (x == 100) { irsend.sendRaw(A_vdown,68,38); delay(40); } if (x == 101) { irsend.sendRaw(A_pup,68,38); delay(40); } if (x == 102) { irsend.sendRaw(A_pdown,68,38); delay(40); } if (x == 103) { irsend.sendNEC(0x807F9867, 32); delay(40); } if (x == 104) { irsend.sendNEC(0x807F58A7, 32); delay(40); } if (x == 105) { irsend.sendNEC(0x807FD827, 32); delay(40); } if (x == 106) { irsend.sendNEC(0x807F38C7, 32); delay(40); } if (x == 107) { irsend.sendNEC(0x807F48B7, 32); delay(40); } if (x == 108) { irsend.sendNEC(0x807FB847, 32); delay(40); } if (x == 109) { irsend.sendNEC(0x807F6897, 32); delay(40); } } if (digitalRead(2)==LOW) { if (digitalRead(2)==LOW&&flag==0) { irsend.sendRaw(A_pup,68,38); delay(200); flag=1; } if(millis() -previousMillis>1000) {previousMillis=millis(); val++; } if (val>=5) { irsend.sendRaw(A_pow,68,38); delay(1000); } } if (digitalRead(2)==HIGH) { val=0;flag=0; } } я добавил к универсальному пульту с блютус, управление кнопкой. Можно управлять кнопкой (система вызова) или для продвинутых пациентов с андроид смартфона. Нужно ещё в блютус прописать номер палаты, чтобы управлять своим телевизором, а не в соседней Палате. Всем спасибо.