| Форум РадиоКот https://radiokot.ru/forum/ |
|
| Адаптер кнопок под магнитолу Kenwood https://radiokot.ru/forum/viewtopic.php?f=43&t=141884 |
Страница 1 из 1 |
| Автор: | Nazka85 [ Вс фев 12, 2017 15:11:21 ] |
| Заголовок сообщения: | Адаптер кнопок под магнитолу Kenwood |
Привет всем, я тут новенький. Привет. Делаю адаптер кнопок руля под магнитолу kenwood, управляется по проводу remocont (сине-желтый) протоколом nec. kenwood использует цифровой интерфейс NEC, аналогичный используемому для ИК управления. От ИК NEC протокола он отличается тем, что при повторах передается вся посылка, без признаков повтора. Ну и адрес используется 2-х байтный неинвертированный (расширенный NEC протокол). И в отличии от беспроводного, проводной не имеет несущей частоты. Реализован NEC протокол для управления так: 0 и 1 отличаются длительностью. Для 0 отводится 560 микросекунд. а для 1 — 560*3 микросекунд. Единичный пакет в протоколе состоит из 4-х байт. 2 байта — адрес, 1 байт — команда и еще 1 байт — побитово инвертированная команда. 0x46B9 — это адрес устройства. Код написал под ардуину, подключал к магнитофону, не фига работать не хочет. На выходной пин вешал светодиод, моргает в такт нажатиям кнопок. Код приложил. Спойлер// kenwood#define kenwoodPin 14 #define cmdSource 0x13 #define cmdVolumeDown 0x15 #define cmdVolumeUp 0x14 #define cmdUp 0x0B #define cmdDown 0x0C #define cmdLeft 0x0A #define cmdRight 0x0B #define cmdPlay 0x0E ///////////////////////////////////////////////////////////////// // джойстик #define rows 4 #define cols 2 // номера кнопок в соответствии со схемой const byte keys[rows][cols] = { {1,5}, {2,6}, {3,7}, {4,8} }; // 13 12 10 9 8 7 6 5 // номера пинов const byte rowPins[rows] = {7, 8, 9, 10}; // строки const byte colPins[cols] = {12, 13}; // столбцы // маски для клавиш #define MaskSRCButton 1 #define MaskPlayButton 2 #define MaskVolumeUpButton 4 #define MaskVolumeDownButton 8 #define MaskLEFTButton 16 #define MaskRIGHTButton 32 #define MaskScrollDown 64 #define MaskScrollUp 128 unsigned long starttime; bool workkbd; ///////////////////////////////////////////////////////////////// void setup() { int i; // строки — на выход for (i = 0; i < rows; ++i) { pinMode(rowPins[i], OUTPUT); } // столбцы — на вход for (i = 0; i < cols; ++i) { pinMode(colPins[i], INPUT_PULLUP); // включаем подтягивающий резистор } // управление Alpine pinMode(kenwoodPin, OUTPUT); starttime = millis(); workkbd = false; } // сканирование джойстика byte scan(void) { int i, j; byte code = 0; for (i = 0; i < rows; ++i) { digitalWrite(rowPins[i], LOW); // кнопки for (j = 0; j < cols; ++j) { if(digitalRead(colPins[j]) == false) { code |= 1 << (keys[i][j] — 1); } } digitalWrite(rowPins[i], HIGH); } return code; } // отправка байта void SendByte(byte data) { for (int i = 0; i < 8; ++i) { digitalWrite(kenwoodPin, HIGH); delayMicroseconds(560); digitalWrite(kenwoodPin, LOW); if (data & 1) { // 1 delayMicroseconds(1680); } else { // 0 delayMicroseconds(560); } data >>= 1; } } // отправка команды void Send(byte command) { digitalWrite(kenwoodPin, HIGH); delayMicroseconds(9000); digitalWrite(kenwoodPin, LOW); delayMicroseconds(4500); SendByte(0xB9); SendByte(0x46); SendByte(command); SendByte(~command); digitalWrite(kenwoodPin, HIGH); delayMicroseconds(560); digitalWrite(kenwoodPin, LOW); } // цикл программы void loop(void) { byte code; code = scan(); if (workkbd == false) { if (millis() — starttime > 3000) workkbd = true; return; } if (code & MaskSRCButton) Send(cmdSource); if (code & MaskPlayButton) Send(cmdPlay); if (code & MaskVolumeUpButton) Send(cmdVolumeUp); if (code & MaskVolumeDownButton) Send(cmdVolumeDown); if (code & MaskLEFTButton) Send(cmdLeft); if (code & MaskRIGHTButton) Send(cmdRight); if (code & MaskScrollDown) Send(cmdDown); if (code & MaskScrollUp) Send(cmdUp); } |
|
| Автор: | Zhuk72 [ Вс фев 12, 2017 21:18:43 ] |
| Заголовок сообщения: | Re: Адаптер кнопок под магнитолу Kenwood |
1. Зачем в конце каждой посылки вы отправляете "1" на 560 мкс? Здесь такого нет, а то зачернение в конце нужно только для того, чтобы указать границу длительности последнего сигнала. 2. Если мне не изменяет мой склероз, с выхода ИК приемника на дешифратор поступает инвертированный сигнал. Возможно и для проводной связи нужно сделать то же самое. |
|
| Автор: | Mishany [ Вс фев 12, 2017 22:45:55 ] |
| Заголовок сообщения: | Re: Адаптер кнопок под магнитолу Kenwood |
Еще одно творение, добро пожаловать http://radiokot.ru/forum/viewtopic.php?f=43&t=116310 |
|
| Автор: | GeparD [ Пт мар 03, 2017 12:27:40 ] |
| Заголовок сообщения: | Re: Адаптер кнопок под магнитолу Kenwood |
О, если заработает, прошивка будет? |
|
| Автор: | Mishany [ Пт мар 03, 2017 14:17:14 ] |
| Заголовок сообщения: | Re: Адаптер кнопок под магнитолу Kenwood |
кому вопрос? |
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|


