-
Re: Управление рулевыми кнопками при помощи Carduino.
Chip вы были правы, всё заработало! Огромное спасибо за советы! Обошелся без реле.
А вот мне интересно, можно ли как нибудь сделать так, чтобы управление с руля можно было переключать с компа на пионер и обратно ? Кнопкой на руле.
И как мне объединить 2 скетча между собой?
Вот скетч благодаря которому работают кнопки на пионере (по удаляйте ненужное если не сложно)
PHP код:
int analogPin = 7; // potentiometer wiper (middle terminal) connected to analog pin 3
// outside leads to ground and +5V
int val = 0; // variable to store the value read
int mute = 5; //MUTE Выход для нажатии кнопки
int volu = 6; //Volume UP Выход для нажатии кнопки
int vold = 7; //Volume DOWN Выход для нажатии кнопки
void setup()
{
Serial.begin(115200); // setup serial
}
void loop()
{
val = analogRead(analogPin); // read the input pin
{
if (val > 600)
pinMode(mute, INPUT);
}
{
if (val > 600)
pinMode(volu, INPUT);
}
{
if (val > 600)
pinMode(vold, INPUT);
}
if (val > 5 and val < 31)
{
pinMode(mute, OUTPUT);
}
if (val > 60 and val < 100)
{
pinMode(volu, OUTPUT);
}
if (val > 130 and val < 190)
{
pinMode(vold, OUTPUT);
}
if (val > 255 and val < 258)
{
Serial.println(2); // debug value
}
if (val > 547 and val < 549)
{
Serial.println(5); // debug value
}
if (val > 384 and val < 387)
{
Serial.println(6); // debug value
}
delay(200);
}
И его как то нужно соединить со скетчем из первого поста, чтобы работала программа hotkey.
Буду очень признателен.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Chip добрый вечер всетаки приобрел я у вас аурдино тепер необходима ваша помощь есть 4 кнопки и один реостат на управление звуком. можно вас попросить набросать схемку и какие сопратевления необходимо поставить ? и написать скетчь для них. Спасибо.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Chip, можешь подсказать по такому вопросу.
ардуино после включения компа не распознается, распознается как "Unknow usb", если переподключить ардуино то все нормально, до следующей перезагрузки (возможно кстати по этой причине драйвера FTDI не хотят нормально работать)
Пробывал менять порты USB, пробывал через внешний хаб с дополнительным питанив, никаких результатов не дало.
Тему просмотрел вроде такой проблемы не заметил , может уже обсуждалась где ?
-
Re: Управление рулевыми кнопками при помощи Carduino.
-
Re: Управление рулевыми кнопками при помощи Carduino.
нет не пробывал, если отключать и подключать то все работает, а если выключить комп, а потом включить не работает, при этом кабель не трогаю.
Думаешь из-за кабеля ?
-
Re: Управление рулевыми кнопками при помощи Carduino.
У меня один из кабелей вел себя похоже.
Перешел на самодельные из нормального толстого провода, проблемы ушли.
-
Re: Управление рулевыми кнопками при помощи Carduino.
на выходных попробую поменять кабель, раньше не получится.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Помогите плста подключить кардуино к кнопкам на руле.
пробовал по схеме в 1м посте, ничего не вышло. Даже подсветка не горит на кнопках :) Хотя может что не так делаю :)
всего 4 провода которые идут к кнопкам, на картинке показано их описание.
http://www.ozzon.net/oz_files/online...s1280/0018.jpg
F8-3 - Speed signal from combination meter
F8-6 - Speed pad switch ground
F8-7 - Steering pad switch signal (кнопка seek+- vol+-)
F8-8 - Steering pad switch signal (кнопка mode)
Везде указано что земля F6-7, это на кабеле от кондея.
все схемы здесь http://www.ozzon.net/oz_files/online...8DujV#0094.jpg :)
Хелп плз)
-
Re: Управление рулевыми кнопками при помощи Carduino.
Попробуй для начала померять сопротивление между F8-7 и "землей" при нажатии на кнопки и без нажатия, а также F8-8 и "землей". Только нужно отсоединить от головного устройства.
-
Re: Управление рулевыми кнопками при помощи Carduino.
возник такой вопрос, можно как нибудь назначит одну и туже кнопку на разные действия ?
CF
Например назначил на следующий трек в плеере и на следующую станцию в радио
но работает только "следующий трек", а в режиме радио центрифуга упорно игнорит команду. Если оставить только управление радио тогда работает в радио.
можно конечно дописать прогу чтобы она слала подряд две кнопки но что то мне не нравится такой подход.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
oops1
CF
Например назначил на следующий трек в плеере и на следующую станцию в радио
но работает только "следующий трек", а в режиме радио центрифуга упорно игнорит команду. Если оставить только управление радио тогда работает в радио.
Беда в том, что у CF разные хоткеи на "трек вперед" и "следующая станция". Т.е. программка, что шлет кнопки в CF должна иметь с CF обратную связь, чтобы знать какой сейчас режим является текущим - радио или музыка.
-
Re: Управление рулевыми кнопками при помощи Carduino.
подскажите, у меня плата с кнопками-площадочками под силиконовую контактную матрицу. В разомкнутом состоянии сопротивление около 3-5 МОм в замкнутом 2-50 ом.
Смогу ли я сделать их резистивными? Я так понимаю, что мне лимит сопротивлений надо сильно расширить?
Может есть другие варианты подключения. Кнопок 8 штук.
-
Re: Управление рулевыми кнопками при помощи Carduino.
А какой шаг сопротивлений?
-
Вложений: 1
Re: Управление рулевыми кнопками при помощи Carduino.
Пока никакой. Сопротивления надо делать, либо подключать 8 кнопок отдельно к 8 входам. Сами кнопки просто имеют нестабильные сопротивления в зажатом состоянии.
Вот платка их таких две. Задача - подключить 2 энкодера (один успешно подцепил уже по схеме из другой темы) и 8 таких вот кнопок.
Как бы вы сделали?
PS Может вынести в отдельную тему мою задачу?Вопросов чую будет много.. Тока я не знаю в каком топике.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Можно сделать, в программе можно настроить пределы погрешности
-
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
SiMuS
... В разомкнутом состоянии сопротивление около 3-5 МОм в замкнутом 2-50 ом...
Так вроде для внутреннего подтягивающего резистора в 20кОм это получаются 100% логические уровни?
-
Re: Управление рулевыми кнопками при помощи Carduino.
в замкнутом тоже колбасит. хотя если брать резистры на 100-1000 ом то можно пренебречь
-
Re: Управление рулевыми кнопками при помощи Carduino.
Chip, подскажи. Использую monitor, все нажатия стабильно с одного раза выводят значения (8 кнопок выводят значения от 8 до 16 соответственно).
Как только начинаю использовать HotKey и HotKey Config - при нажатии накнопку значение высвечивается не с первого раза и на нажатие реагирует с 2-3 раза... в чем может быть дело?
-
Re: Управление рулевыми кнопками при помощи Carduino.
Установи предел погрешности побольше
-
Re: Управление рулевыми кнопками при помощи Carduino.
Не поможет.
Пример.
Нажимаю кнопку 1 раз. Высвечивается значение 2832 нажимаю 2 и 3 раз - ничего не меняется. Нажимаю быстро 3-5 раз, высвечивается 4112. Дальше сколько бы я не нажимал будет высвечиваться 4112.
Нажимаю соседнюю кнопку. Выводится 4113. После 3-5 быстрых нажатий значение становится 4369. и остается таким дальше сколько бы я не нажимал...
-
Re: Управление рулевыми кнопками при помощи Carduino.
В чем может быть проблема?
-
Re: Управление рулевыми кнопками при помощи Carduino.
2832 такого значения быть не должно, максимальное значение это 1023
-
Вложений: 1
Re: Управление рулевыми кнопками при помощи Carduino.
Из-за чего тогда у меня могут быть такие значения?
PHP код:
#define encoder0PinA 2
#define encoder0PinB 3
#define encoder1PinA 4
#define encoder1PinB 5
byte bytes[2]={0,20} ;
void setup()
{
pinMode(encoder0PinA, INPUT);
digitalWrite(encoder0PinA, HIGH); // подключить подтягивающий резистор
pinMode(encoder0PinB, INPUT);
digitalWrite(encoder0PinB, HIGH); // подключить подтягивающий резистор
pinMode(encoder1PinA, INPUT);
digitalWrite(encoder1PinA, HIGH); // подключить подтягивающий резистор
pinMode(encoder1PinB, INPUT);
digitalWrite(encoder1PinB, HIGH); // подключить подтягивающий резистор
//10 кнопок. 2 на энкодере, 8 на панели.
pinMode(7, INPUT);
digitalWrite(7, 1);
pinMode(8, INPUT);
digitalWrite(8, 1);
pinMode(9, INPUT);
digitalWrite(9, 1);
pinMode(10, INPUT);
digitalWrite(10, 1);
pinMode(11, INPUT);
digitalWrite(11, 1);
pinMode(12, INPUT);
digitalWrite(12, 1);
pinMode(14, INPUT);
digitalWrite(14, 1);
pinMode(15, INPUT);
digitalWrite(15, 1);
pinMode(16, INPUT);
digitalWrite(16, 1);
pinMode(17, INPUT);
digitalWrite(17, 1);
attachInterrupt(0, doEncoderA, FALLING); // настроить прерывание interrupt 0 на pin 2
attachInterrupt(1, doEncoderB, FALLING); // настроить прерывание interrupt 0 на pin 3
Serial.begin (115200);
}
unsigned graydecode(unsigned gray)
{
unsigned bin;
for (bin = 0; gray; gray >>= 1)
bin ^= gray;
return bin;
}
void loop()
{
if(digitalRead(7)==LOW)
{
bytes[1]=7;
Serial.write( bytes,2);
while(digitalRead(7)==LOW){delay(50);}
bytes[1]=20;
}
if(digitalRead(8)==LOW)
{
bytes[1]=8;
Serial.write( bytes,2);
while(digitalRead(8)==LOW){delay(50);}
bytes[1]=20;
}
if(digitalRead(9)==LOW)
{
bytes[1]=9;
Serial.write( bytes,2);
while(digitalRead(9)==LOW){delay(50);}
bytes[1]=20;
}
if(digitalRead(10)==LOW)
{
bytes[1]=10;
Serial.write( bytes,2);
while(digitalRead(10)==LOW){delay(50);}
bytes[1]=20;
}
if(digitalRead(11)==LOW)
{
bytes[1]=11;
Serial.write( bytes,2);
while(digitalRead(11)==LOW){delay(50);}
bytes[1]=20;
}
if(digitalRead(12)==LOW)
{
bytes[1]=12;
Serial.write( bytes,2);
while(digitalRead(12)==LOW){delay(50);}
bytes[1]=20;
}
if(digitalRead(14)==LOW)
{
bytes[1]=14;
Serial.write( bytes,2);
while(digitalRead(14)==LOW){delay(50);}
bytes[1]=20;
}
if(digitalRead(15)==LOW)
{
bytes[1]=15;
Serial.write( bytes,2);
while(digitalRead(15)==LOW){delay(50);}
bytes[1]=20;
}
if(digitalRead(16)==LOW)
{
bytes[1]=16;
Serial.write( bytes,2);
while(digitalRead(16)==LOW){delay(50);}
bytes[1]=20;
}
if(digitalRead(17)==LOW)
{
bytes[1]=17;
Serial.write( bytes,2);
while(digitalRead(17)==LOW){delay(50);}
bytes[1]=20;
}
static uint8_t tmp_code = 0;
uint8_t gray_code = digitalRead(encoder1PinA) | (digitalRead(encoder1PinB) << 1),
code = graydecode(gray_code);
if (code == 0)
{
if (tmp_code == 3)
{
bytes[0]=3;
bytes[1]=20;
Serial.write( bytes,2);
bytes[0]=0;
} else if (tmp_code == 1)
{
bytes[0]=4;
bytes[1]=20;
Serial.write( bytes,2);
bytes[0]=0;
}
}
tmp_code = code;
delay(2);
}
// обработка прерывания
void doEncoderA()
{
if(digitalRead(encoder0PinB)==HIGH){bytes[0]=1;}else{bytes[0]=2;}
Serial.write( bytes,2);
bytes[0]=0;
}
// обработка прерывания
void doEncoderB()
{
if(digitalRead(encoder0PinA)==HIGH){bytes[0]=2;}else{bytes[0]=1;}
Serial.write( bytes,2);
bytes[0]=0;
}
-
Re: Управление рулевыми кнопками при помощи Carduino.
Ты не подключил внутренние подтягивающие резисторы как на энкодере, и вообще лучше опрашивать порты в цикле for , код будет компактнее
-
Re: Управление рулевыми кнопками при помощи Carduino.
digitalWrite(7, 1);
Как это не подключил....
-
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
while(digitalRead(10)==LOW){delay(50);}
bytes[1]=20;
Это для чего?
еще нужно бороться с дребезгом, для твоего скетча предел погрешности нужно сделать равным =0, вести опрос портов в цикле
Цитата:
for(перебор всех портов i) digitalRead(i)
-
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
Chip
Это для чего?
Ты в своем скетче так кнопку энкодера описал, я просто по наналогии повторил.
PHP код:
if(digitalRead(encoder0PinC)==LOW)
{
bytes[1]=8;
Serial.write( bytes,2);
while(digitalRead(encoder0PinC)==LOW){delay(50);}
bytes[1]=7;
}
Я так понимаю это у тебя для сочетания нажатия с поворотом? Правда я не понял зачем задержка нужна.Чтоб во время поворота энкодара дребезг на кнопке не мешал?
Цитата:
Сообщение от
Chip
еще нужно бороться с дребезгом, для твоего скетча предел погрешности нужно сделать равным =0, вести опрос портов в цикле
Погрешность в autohotkey?
В цикле попробую сделать.
-
Re: Управление рулевыми кнопками при помощи Carduino.
У тебя нет погрешности , так как ты отправляешь фиксированные значения
-
Re: Управление рулевыми кнопками при помощи Carduino.
Обновление, выпущена бета версия программы упраления рулевыми кнопками
Пробуем и отписываемся
-
Re: Управление рулевыми кнопками при помощи Carduino.
Из сервиса мануала моего авто:
Remote audio control switch resistance
All switches released (OFF): 5119 – 5223 Ом
Switch “1” pushing on (ON): 55 – 57 Ом
Switch “2” pushing on (ON): 129 – 133 Ом
Switch “3” pushing on (ON): 238 – 244 Ом
Switch “4” pushing on (ON): 416 – 426 Ом
Switch “5” pushing on (ON): 743 – 759 Ом
Switch “6” pushing on (ON): 1555 – 1587 Ом
Посоветуйте пожалуйста, какого номинала лучше воткнуть резистор между разъемами +5V и A5?
-
Re: Управление рулевыми кнопками при помощи Carduino.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
Chip
1-3 ком
Спасибо за ответ, что примерно я получу на выходе, если взять резистор на 3,3 кОм?
Соединение последовательное или я что-то путаю? Т.е. 3,3 кОм + сопротивление кнопки?
И что все же лучше - 1,3 или 3,3 ?
И по какому принципу выбрать номинальную мощность? Чем больше, чем лучше?
Резистор С1-4 0.125/0.25 вт, 5%, 3.3 КОм
Резистор С1-4 0.5 вт, 5%, 3.3 КОм
Резистор С1-4 1 вт, 5%, 3.3 КОм
Резистор С2-23 0.125/0.25 вт, 1%, 3.3 КОм
-
Re: Управление рулевыми кнопками при помощи Carduino.
Я бы советовал 3,3к
Мощность любую, потому как ток через него будет течь не большой
-
Re: Управление рулевыми кнопками при помощи Carduino.
при всех отпущеных кнопках в monitor.exe приходит 255 3
можно как то избавиться от этого мусораГ?
-
Re: Управление рулевыми кнопками при помощи Carduino.
Все верно это и есть напряжение смещения +5в в 10 битном формате 1023
Для того что бы избавится нужно в коде запретить отправлять зто значение
PHP код:
if(res_dt1<1023)
Serial.write( bytes,2); // отправить прочитаное значение компьютеру
-
Re: Управление рулевыми кнопками при помощи Carduino.
Тока для новго скетча там вроде переменная res_d .
-
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
Chip
Обновление, выпущена бета версия
программы упраления рулевыми кнопками
Пробуем и отписываемся
А эта программа будет работать с обычной ардуино, без всяких там джойстиков и адаптеров ?
Просто у меня старая программа hotkey но ведёт она себя не очень адекватно и стабильно.
-
Re: Управление рулевыми кнопками при помощи Carduino.
Работать будет если все сделать по инструкции
-
Re: Управление рулевыми кнопками при помощи Carduino.
Цитата:
Сообщение от
SiMuS
Тока для новго скетча там вроде переменная res_d .
Главное смысл понятен , а переменную можно как угодно обозвать
-
Re: Управление рулевыми кнопками при помощи Carduino.
А как схемотехнически подключить такие кнопки к ардуино мега?
http://chinamobil.ru/bb/files/rc23_916.jpg
http://chinamobil.ru/bb/files/rc22_145.jpg
http://chinamobil.ru/bb/files/rc25_764.jpg
http://chinamobil.ru/bb/files/rc26_107.jpg
Маркировка резисторов, кнопок управления магнитолой:
R0 - 2201 (2,2 кОм)
R1- 3901 (3,9 кОм)
R2 - 103 (10 кОм)
R3 - 2202 (22 кОм)
Маркировка резисторов, кнопок управления круиз-контроля:
R11 - 82R0 (82 Ом)
R12 - 82R0 (82 Ом)
R13 - 1200 (120 Ом)
R14 - 103 (10 кОм)
Резисторы на подствеку имеют маркировку - 752 (7,5 кОм)
Синий провод - 12 вольт подсветки на диоды от габаритов
Серый провод - GND
Я так понимаю к аналог. входу ардуино надо подключать, а вот как?