Я так понял, что этот кусок надо добавить к библиотеке?
Я так понял, что этот кусок надо добавить к библиотеке?
ребят в програмировании 3- подскажите что делать надо чтоб заработало
У кого есть пульт JVC - попробуйте эту библиотеку.
Тут еще добавлена поддержка 3D ТВ самсунг - это проверено.
Последний раз редактировалось CarMonitor.ru; 23.05.2011 в 17:32.
выдаёт один и тотже код 3041575485 независомо какая клавиша нажата
запусти SerialMonitor, выбири скорость 115200, нажми кнопку на пульте, скопируй то, что он выдаст и напиши здесь.
SerialMonitor из arduino-0018 выдаёт ероглифы какието а вот monitor.exe ваша прога выдает в DEC 47 208 74 181 47 208 74 181
47 208 74 181 47 208 74 181 47 208 74 181 47 208 74 181
47 208 74 181 47 208 74 181 перебрал все кнопки
Попробуй эту библиотеку
Последний раз редактировалось Chip; 24.05.2011 в 02:44.
Ура работает причём оба пульта и pioner и jvc !!! спасибо CarMonitor.ru
Могу добавить протокол для пультов SHARP и PANASONIC. Вот только проверить не начем, если кого заинтересует пишите , добавлю
Протокол для пультов SHARPPHP код:
#define PANASONIC_HDR_MARK 3502
#define PANASONIC_HDR_SPACE 1750
#define PANASONIC_BIT_MARK 502
#define PANASONIC_ONE_SPACE 1244
#define PANASONIC_ZERO_SPACE 370
//Sending function:
void IRsend::sendPanasonic(unsigned long address, unsigned long data) {
enableIROut(38);
mark(PANASONIC_HDR_MARK);
space(PANASONIC_HDR_SPACE);
for (int i=0; i < 32; i++) {
mark(PANASONIC_BIT_MARK);
if (address & 0x80000000) {
space(PANASONIC_ONE_SPACE);
} else {
space(PANASONIC_ZERO_SPACE);
}
address <<= 1;
}
for (int i=0; i < 16; i++) {
mark(PANASONIC_BIT_MARK);
if (data & 0x8000) {
space(PANASONIC_ONE_SPACE);
} else {
space(PANASONIC_ZERO_SPACE);
}
data <<= 1;
}
mark(PANASONIC_BIT_MARK);
space(30000);
space(30000);
space(14000);
}
//Receiving funtion:
long IRrecv::decodePanasonic(decode_results *results) {
unsigned long data = 0;
int offset = 1;
if (!MATCH_MARK(results->rawbuf[offset], PANASONIC_HDR_MARK)) {
return ERR;
}
offset++;
if (!MATCH_MARK(results->rawbuf[offset], PANASONIC_HDR_SPACE)) {
return ERR;
}
offset++;
// decode address
for (int i = 0; i < 32; i++) {
if (!MATCH_MARK(results->rawbuf[offset++], PANASONIC_BIT_MARK)) {
return ERR;
}
if (MATCH_SPACE(results->rawbuf[offset],PANASONIC_ONE_SPACE)) {
data = (data << 1) | 1;
} else if (MATCH_SPACE(results->rawbuf[offset],PANASONIC_ZERO_SPACE)) {
data <<= 1;
} else {
return ERR;
}
offset++;
}
results->address = data;
data = 0;
for (int i = 0; i < 16; i++) {
if (!MATCH_MARK(results->rawbuf[offset++], PANASONIC_BIT_MARK)) {
return ERR;
}
if (MATCH_SPACE(results->rawbuf[offset],PANASONIC_ONE_SPACE)) {
data = (data << 1) | 1;
} else if (MATCH_SPACE(results->rawbuf[offset],PANASONIC_ZERO_SPACE)) {
data <<= 1;
} else {
return ERR;
}
offset++;
}
results->value = data;
results->decode_type = PANASONIC;
results->bits = 48;
return DECODED;
}
PHP код:
//IRremote.h
#define DISH 5
#define SHARP 6
void sendDISH(unsigned long data, int nbits);
void sendSharp(unsigned long data, int nbits);
//IRremoteInt.h
#define SHARP_BIT_MARK 245
#define SHARP_ONE_SPACE 1805
#define SHARP_ZERO_SPACE 795
#define SHARP_GAP 600000
#define SHARP_TOGGLE_MASK 0x3FF
#define SHARP_RPT_SPACE 3000
#define DISH_HDR_MARK 400
#define DISH_HDR_SPACE 6100
#define DISH_BIT_MARK 400
#define DISH_ONE_SPACE 1700
#define DISH_ZERO_SPACE 2800
#define DISH_RPT_SPACE 6200
#define DISH_TOP_BIT 0x8000
#define SHARP_BITS 15
#define DISH_BITS 16
//IRremote.cpp
void IRsend::sendSharp(unsigned long data, int nbits) {
unsigned long invertdata = data ^ SHARP_TOGGLE_MASK;
enableIROut(38);
for (int i = 0; i < nbits; i++) {
if (data & 0x4000) {
mark(SHARP_BIT_MARK);
space(SHARP_ONE_SPACE);
}
else {
mark(SHARP_BIT_MARK);
space(SHARP_ZERO_SPACE);
}
data <<= 1;
}
mark(SHARP_BIT_MARK);
space(SHARP_ZERO_SPACE);
delay(46);
for (int i = 0; i < nbits; i++) {
if (invertdata & 0x4000) {
mark(SHARP_BIT_MARK);
space(SHARP_ONE_SPACE);
}
else {
mark(SHARP_BIT_MARK);
space(SHARP_ZERO_SPACE);
}
invertdata <<= 1;
}
mark(SHARP_BIT_MARK);
space(SHARP_ZERO_SPACE);
delay(46);
}
void IRsend::sendDISH(unsigned long data, int nbits)
{
enableIROut(56);
mark(DISH_HDR_MARK);
space(DISH_HDR_SPACE);
for (int i = 0; i < nbits; i++) {
if (data & DISH_TOP_BIT) {
mark(DISH_BIT_MARK);
space(DISH_ONE_SPACE);
}
else {
mark(DISH_BIT_MARK);
space(DISH_ZERO_SPACE);
}
data <<= 1;
}
}
Последний раз редактировалось Chip; 23.05.2011 в 23:19.
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)