Простите меня за глупый вопрос. У меня mazda 3 управление идет от двух проводов.
http://www.compcar.ru/forum/attachme...1&d=1253186805
Куда их нужно подключить?:(
Вид для печати
Простите меня за глупый вопрос. У меня mazda 3 управление идет от двух проводов.
http://www.compcar.ru/forum/attachme...1&d=1253186805
Куда их нужно подключить?:(
Надпись "К рулевым кнопкам" , как раз 2 провода
Подключение пульта Sony RM-X4S к Arduino
Производится по следующей схеме:
http://funkyimg.com/u2/467/619/rm-x4s_arduino.png
Для torpedo Control, имеющего восьмиразрядный АЦП, я определил следующие значения для кнопок:
Код:Source: 45
Volume left: 160
Volume right: 179
Seek left: 120
Seek right: 140
Shifted Seek l: 54
Shifted Seek r: 58
Button left: 101
Button middle: 214
Button right: 197
Off: 0
ATT: 78
Chip тут без твоей помощи ни как.
Вчера поставил пульт и столкнулся с некоторыми трудностями при выходе из режима сна он ругается и закрывает программу.
Потом если запустить по новой программу всё дальше работает до следующего выхода из режима сна.
Подправил программу , но проверить пока нет возможности.
Попробуй и отпишись
Уважаемый Chip!
Вчера после решения прошлогодних проблем с блоком питания поставил обратно в машину свой CarPC. За одно сменил систему на Windows7.
Все устройства подхватились кроме кнопок на руле.
Драйвер из комплекта поставил и неопознанное устройство пропало.
НО! попытка запустить утилиту конфигурации приводит к описанной выше ошибке. Сама программа так же не запускается и выдает ошибку типа не смогла найти устройство.
Посоветуйте что делать. Все остальное работает зачетно.
Думаю надо бы удалить драйвер и поставить по новой, но я никак не найду его в списке. Подскажите как он у вас называется.
Вадим
Для Win 7 нужно новый драйвер устанавливать
скачать
Спасибо! Завтра попробую.
я позже проверю ща красить все панели надумал
Драйвер переустановил. Программа конфигурации запускается, но настройка не делается. Вроде как не видит нажатий кнопок на руле.
Либо напортачил с подключением, помните Вы схему мне давали на Тойоту, либо с системой или прогой что-то ни так. В пользу последнего предположения говорит то, что сама программа НЕ ЗАПУСКАЕТСЯ. Ошибка та же - не видит устройства.
Вадим
Здраствуйте, можно ли использовать ваше устройство в Ниссан Тиида? И будет ли таботать кнопка телефона (ответ\сброс) продублированная на руле от головного устройства (блютус)?
Наконец покрасили мне панели и я собрал всё.
И наконец проверил потестил.
Поставил новый драйвер и новую программу.
Результат: Вылетает таже ошибка.
если нажать ОК программа продолжает работать без проблем.
Ранее было по другому при нажатии ОК выскакивало окно ещё пару раз и прога выгружалась. И надо было по новой её запускать.
http://www.compcar.ru/forum/attachme...1&d=1263273631
Установил на нетбук Win 7 , через 10 мин программу победил, удалось заставить работать после сна.
Программу обновил в шапке
ура я проверю сегодня
Проверил на первый взгляд всё работает.
Но при выходе из сна дал ошибку, я нажал ок и пришлось перезапустить программу.
Повторно повторить ошибку пока не удалось, сделал несколько входов выходов в сон результат положительный
Короче потестил я эту приблуду и меня совсем не вдохновило.
Работает медленно, кнопку надо удерживать если не удерживать может не саботать, не всегда срабатывает.
Реакцию на нажатие можно уменьшить.
Я вчера выложил программу и забыл после эксперементов время таймера назад вернуть. Перезалил программу в шапке
Да и паузу между нажатиями в коде кардуино подправь под себя
поробуй и отпишисьPHP код:
delay(200); // Пауза между нажатиями
код кардуино перезалей , я уменьшил время определения дребезга контактов
попробую, а то совсем не вдохновляет из резисторных кнопок матрицу ваять
Подскажите, как все-таки поставить границы сопротивлений…
Прочёл всю ветку, перепробовал все возможные варианты, а программа всё равно выдает ошибку, работает только с одним значением, т.е. например с таким: <755>Key1=175 />
Ошибку выдаёт если ставить:
<-755->Key1=175 />
750<-755->760Key1=175 />
<750-760>Key1=175 />
Ещё я не понял для чего в config.txt нужна строка: Limit= 5 units и зачем в программе HKey_config.exe внизу выставлять значения… убедился лишь в том, что изменение этих значений к желаемому результату не приводит =(
Ну и на последок, когда будет реализована функция короткого нажатия, нажатия с удержанием и как вариант двойного быстрого нажатия!?...
Limit= 5 units это и есть допуск сопротивлений (+5)(-5), можно менять из программы config
я в итоге решил переделать на кнопки с резисторных на матричные.
Не удалось достичь успеха. Пробовал менять время в прошивке.
Добился что получаю двойное нажатие, с стандартным параметром тоже устойчивость не радует, или нажмёт 1 раз и быстро, или не нажмёт ваще, или выдаст двойное нажатие(т.к. если не сработало продолжаю держать)
Попробую подправлю прошивку , первое нажатие длинная пауза и если есть удержание то будут повторы короткие. В ИК пульте так реализовал
гм, а это работает все через usb?
вот думаю может это все сделать на простейшем контроллере пик 8 ногом и отправлять через какой нить PL-микрухе в usb? хотя у меня кнопок на руле нет, мож джостик от соньки прибабахать...
Реализовано, но пока не до конца.
Подскажите как можно подключить штатные кнопки на три контакта +12 GND и сигнал
А зачем +12в
Извините что неполностью раскрыл вопрос. Начну с самого начала. у меня Nissan Almera Tino в машине есть заводские кнопки управления магнитолой и выводом инфы на экран кнопки представляют из себя блок к которому подходят 3 контакта +12, сигнал и земля. причем на сигнальном контекте постоянно присутствуют импульсы а при нажатии кнопки импульсы меняются. Вот я и хотел узнать можно ли задействовать эти кнопки для управления компом кнопок всего 6.
+12в подключить можно через резистивный делитель.
+12 можно подключить и на прямую с предохранителей суть вопроса в том как при помощи данной программы, блока кнопок и arduino управлять компом. Здесь описано что к подключаешь землю и сигнал и програмируешь кнопки а у меня постоянно с кнопок идут импульсы проще говоря если все подключить как описано выше то постоянно будут менятся песни например.
Да еще блок кнопок представляет из себя отдельный электронный миханизм ч микросхемами конденсаторами и тд. которое без 12 воль никак не риагирует на нажатие кнопок
В данной ветке описано подключение резистивных кнопок к ардуине. У тебя же походу блок кнопок выдает что-то на однопроводный интерфейс, а-ля I2C. Ардуину этому интерфейсу научить естесственно можно, но, нужно знать что там передается и как :( Короче, снифферить шину надо или гууглить на эту тему.
ясно, спасибо за ответ. Наверное проще будет в этом корпусе собрать свои кнопки и подключит их к компу.
Протестируйте новый код, теперь моментальная реакция на нажатие, реализовал функцию удержание, минимальное время удержания 0.5сек , можно увеличить или уменьшить в коде.
PHP код:
//http://compcar.ru
byte bytes[2] = { 7, 0};
unsigned int res_dt1, old_dt1, idx;
unsigned long math_time,old_time,real_time;
void setup()
{
Serial.begin(115200); // настроить скорость com порта
}
void loop()
{
res_dt1 = analogRead(5); // прочитать данные АЦП
delay(30); //проверка дребезга
if(res_dt1 == analogRead(5) ) //если нет дребезга && res_dt1 < 1023
{
old_time = real_time;
math_time = 0;
while(math_time < 500 && res_dt1 == analogRead(5))
{
real_time = millis(); //получить реальное время
math_time = real_time - old_time; //считаем длительность паузы
}
if(math_time > 498 && res_dt1 < 1023) res_dt1 |= 1024;
bytes[0] = res_dt1 & 255; // преобразовать в 2-байта
bytes[1] = (res_dt1 & 1792) >> 8;
Serial.write( bytes,2); // отправить прочитаное значение компьютеру
}
}
функция удержание - это значит что короткое одна комбинация кнопок, длительное другая
Все верно
А как в HotKey настроить с новым кодом( короткое или длительное) , что-то не догоняю
Как понял - для начала надо значение времени поставить в math_time = (0,5 - дальше);
При коротком значение в HotKey например -35 при длительном увеличится на еденицу -36 и руками в инфе править
Позже проверю, а то вчера в торопях выложил и даже не проверил
Попробуй в конфиге прибавить к твоему значению кнопки 1024
Добавлю свои 5 копеек. Такие же проблемы были, сколько не изгалялся с подбором времени задержки "дребезга" - не удалось добиться полность 100% реакции, как в штатной магнитоле.
В итоге перенес логику определения какая кнопка нажата полностью в ардуину, т.е. на выходе она выдает в компорт код нажатой кнопки, а не значение из АЦП. Получилось громоздко, зато теперь никаких двойных нажатий или проглатывания нажатой кнопки нет.
PHP код:
// Для рулевых кнопок
// Задержки между нажатиями конкретных кнопок, миллисекунды
#define KEY_CH_MINUS_DELAY (200)
#define KEY_CH_PLUS_DELAY (200)
#define KEY_VOL_MINUS_DELAY (150)
#define KEY_VOL_PLUS_DELAY (150)
#define KEY_MODE_DELAY (300)
// Значения кнопок
#define KEY_CH_MINUS (445)
#define KEY_CH_PLUS (640)
#define KEY_VOL_MINUS (90)
#define KEY_VOL_PLUS (270)
#define KEY_MODE (805)
// Погрешность при чтении кнопок
#define KEY_DELTA (30)
// Коды кнопок, что отсылаем в порт внешней проге
#define CH_MINUS (1)
#define CH_PLUS (2)
#define VOL_MINUS (3)
#define VOL_PLUS (4)
#define MODE (5)
#define NONE (0)
unsigned long LastTimeKeyPressed = millis();
int LastKeyPressed = NONE;
void setup()
{
Serial.begin(57600);
}
void loop()
{
ReadSteering();
delay(50);
}
// Читает рулевые кнопки и пишет в порт код нажатой кнопки
void ReadSteering()
{
unsigned long TimeKeyPressed;
int KeyPressed = NONE;
int dt1 = analogRead(0);
delay(50);
int dt2 = analogRead(0);
if (abs(dt1-dt2)<=5 and dt1<900 ) //если нет дребезга и что-то есть
{
// Регистрируем время нажатия кнопки
TimeKeyPressed = millis();
//CH_MINUS
if ( (dt1-KEY_DELTA <= KEY_CH_MINUS) and (dt1+KEY_DELTA >= KEY_CH_MINUS) )
{
if ( (LastKeyPressed != CH_MINUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_MINUS_DELAY) )
{
LastKeyPressed = CH_MINUS;
KeyPressed = CH_MINUS;
LastTimeKeyPressed = TimeKeyPressed;
}
}
//CH_PLUS
else if ( (dt1-KEY_DELTA <= KEY_CH_PLUS) and (dt1+KEY_DELTA >=KEY_CH_PLUS) )
{
if ( (LastKeyPressed != CH_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PLUS_DELAY) )
{
LastKeyPressed = CH_PLUS;
KeyPressed = CH_PLUS;
LastTimeKeyPressed = TimeKeyPressed;
}
}
//VOL_MINUS
else if ( (dt1-KEY_DELTA <= KEY_VOL_MINUS) and (dt1+KEY_DELTA >=KEY_VOL_MINUS) )
{
if ( (LastKeyPressed != VOL_MINUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_VOL_MINUS_DELAY) )
{
LastKeyPressed = VOL_MINUS;
KeyPressed = VOL_MINUS;
LastTimeKeyPressed = TimeKeyPressed;
}
}
//VOL_PLUS
else if ( (dt1-KEY_DELTA <= KEY_VOL_PLUS) and (dt1+KEY_DELTA >=KEY_VOL_PLUS) )
{
if ( (LastKeyPressed != VOL_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_VOL_PLUS_DELAY) )
{
LastKeyPressed = VOL_PLUS;
KeyPressed = VOL_PLUS;
LastTimeKeyPressed = TimeKeyPressed;
}
}
//MODE
else if ( (dt1-KEY_DELTA <= KEY_MODE) and (dt1+KEY_DELTA >=KEY_MODE) )
{
if ( (LastKeyPressed != MODE) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_MODE_DELAY) )
{
LastKeyPressed = MODE;
KeyPressed = MODE;
LastTimeKeyPressed = TimeKeyPressed;
}
}
if (KeyPressed != NONE)
{
Serial.print(char(255));
Serial.print(KeyPressed,DEC);
}
//Serial.print(dt1,DEC);
//Serial.print(" ");
//Serial.println(dt2,DEC);
}
}