20.09.2015, 23:38 | #51 |
Старший Пользователь
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
|
Сделал аквапринт всех деталей салона ну и естественно центральной рамки планшета)
https://yadi.sk/i/S0SFbfJGjCyFM Уже всё установлено, думаю завтра сфоткаю и выложу с миниатюрами)))
__________________
AUDI A6 (C5) V6 2.8L Последний раз редактировалось TransF; 21.09.2015 в 00:10. |
22.09.2015, 00:21 | #52 |
Старший Пользователь
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
|
Скетч для использования рулевых кнопок и энкодера под планшетом
//****************** Здесь необходимо указать свои значения *************** int analogPin=0; // пин для подключения кнопок, по умолчанию A0 int release_button = 1023; // значение при отпущенных кнопках int button_release_range = 50; // диапазон значения + - при отпущенных кнопках int button_range = 10; // диапазон значения нажатых кнопок + - int time_holding = 500; // время для удержания кнопок в миллисекундах int time_tinkling = 10; // время исключающее дребезг контактов в миллисекундах int vol_up = 111; // значение кнопки увеличить громкость int vol_down = 222; // значение кнопки уменьшить громкость int alt_tab = 333; // значение кнопки которая будет работать как Alt + Tab int next = 444; // значение кнопки которая будет работать как Next при коротком нажатии и Fast Forward при удержании int previous = 555; // значение кнопки которая будет работать как Previous при коротком нажатии и Rewind при удержании int play_pause = 777; // значение кнопки которая будет работать как Play/Pause при коротком нажатии и Mute при удержании //************************************************** ************************ int data; unsigned long flag = 0; unsigned long eventTime = 0; unsigned long pauseMillis = 0; void setup() { PCICR=1<<PCIE0; PCMSK0=(1<<PCINT5)|(1<<PCINT4); pinMode (7,INPUT_PULLUP); pinMode (8,INPUT); pinMode (9,INPUT); attachInterrupt(4, key_mute, FALLING); Keyboard.begin(); } void loop() { data=analogRead(analogPin); if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 0) { eventTime=millis(); } //********************** Громкость ************************************ if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= vol_up - button_range && data <= vol_up + button_range && flag == 0) { Remote.increase(); flag = 5; delay(10); Remote.clear(); } if(millis()-eventTime>time_holding && data >= vol_up - button_range && data <= vol_up + button_range && flag == 5 || data >= vol_up - button_range && data <= vol_up + button_range && flag && flag == 3) { Remote.increase(); flag = 3; Remote.clear(); delay(100); } if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= vol_down - button_range && data <= vol_down + button_range && flag == 0) { Remote.decrease(); flag = 6; delay(10); Remote.clear(); } if(millis()-eventTime>time_holding && data >= vol_down - button_range && data <= vol_down + button_range && flag == 6 || data >= vol_down - button_range && data <= vol_down + button_range && flag == 3) { Remote.decrease(); flag = 3; Remote.clear(); delay(100); } //********************** AltTab + Ещё что то ************************************ if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= alt_tab - button_range && data <= alt_tab + button_range) { flag = 1; } if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 1 && pauseMillis == 0) { Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_TAB); Keyboard.release(KEY_TAB); Keyboard.press(KEY_TAB); Keyboard.release(KEY_TAB); flag = 0; pauseMillis = millis(); } if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 1 && pauseMillis != 0) { Keyboard.press(KEY_TAB); Keyboard.release(KEY_TAB); flag = 0; pauseMillis = millis(); } if(pauseMillis && millis()-pauseMillis >= 800 && data>=release_button - button_release_range && data<=release_button + button_release_range) { flag = 0; pauseMillis = 0; Keyboard.releaseAll(); } if(millis()-eventTime>time_holding && data >= alt_tab - button_range && data <= alt_tab + button_range && flag == 1) { flag = 0; } //********************** Next и Fast Forward ************************************ if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= next - button_range && data <= next + button_range) { flag = 2; } if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 2) { Remote.next(); flag = 0; delay(10); Remote.clear(); } if(millis()-eventTime>time_holding && data >= next - button_range && data <= next + button_range && flag == 2 || data >= next - button_range && data <= next + button_range && flag == 3) { Remote.forward(); flag = 3; Remote.clear(); delay(100); } //********************** Previous и Rewind ************************************ if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= previous - button_range && data <= previous + button_range) { flag = 4; } if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 4) { Remote.previous(); flag = 0; delay(10); Remote.clear(); } if(millis()-eventTime>time_holding && data >= previous - button_range && data <= previous + button_range && flag == 4 || data >= previous - button_range && data <= previous + button_range && flag == 3) { Remote.rewind(); flag = 3; Remote.clear(); delay(100); } //********************** Play/pause + Mute ************************************ if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= play_pause - button_range && data <= play_pause + button_range) { flag = 7; } if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 7) { Remote.play_pause(); flag = 0; delay(10); Remote.clear(); } if(millis()-eventTime>time_holding && data >= play_pause - button_range && data <= play_pause + button_range && flag == 7) { Remote.mute(); flag = 0; delay(10); Remote.clear(); } if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 3 || data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 5 || data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 6) { flag = 0; } } ISR (PCINT0_vect){ static byte old_n=PINB&B00110000; byte new_n=PINB&B00110000; if (old_n==32&&new_n==48||old_n==16&&new_n==0) { Remote.increase(); delay(10); Remote.clear();} if (old_n==16&&new_n==48||old_n==32&&new_n==0) { Remote.decrease(); delay(10); Remote.clear();} old_n= new_n; } void key_mute() { Remote.mute(); delay(10); Remote.clear();}
__________________
AUDI A6 (C5) V6 2.8L Последний раз редактировалось TransF; 22.09.2015 в 15:07. |
09.10.2015, 21:27 | #53 |
Старший Пользователь
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
|
Пока жду новый руль из Питера, всё доведено до полного работоспособного состояния.
Планшет писается от батареи (пока) в него без доп питания воткнут Хаб на gl850 В него в сою очередь флешка и ардуина, в которой залит скетч для энкодера PHP код:
Что-то недоверяю NDS15 заказал Kis-ы и CAN-шилд для чтения рулевых кнопок.
__________________
AUDI A6 (C5) V6 2.8L |
14.10.2015, 21:18 | #54 |
Старший Пользователь
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
|
Как всегда всё не бывает просто)))
Был приобретён мультируль от Ауди Q7 2008г. Как выяснилось внутри него стоит ещё 2 энкодера((( Решил ставить 2 отдельную ардуину и в скетч прописать 2 энкодера и всего 4 кнопки. На руле - в планшете Mode - alt+tab Mute - play+pause На энкодере слева - ещё не решил. На энкодере справа - Mute Энкодер слева - трек вперёд назад Энкодер справа - дублирует тот что на планшете vol- и vol+.
__________________
AUDI A6 (C5) V6 2.8L Последний раз редактировалось TransF; 05.11.2015 в 23:03. |
05.11.2015, 22:59 | #55 |
Старший Пользователь
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
|
Пока идёт ардуина из Китая подключил и поставил планшет в машину ,совсем.
Вылезла проблема, шумы в звуковом тракте, при чем когда выключаю дисплей всё хорошо звук чистый, как включаю треск и шип, как раньше на сиди-ромах. Кто сталкивался помогите?)
__________________
AUDI A6 (C5) V6 2.8L |
21.11.2015, 22:28 | #56 |
Старший Пользователь
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
|
Ну вот дождался, пришла вторая ардуина для рулевого управления. так же пришел КАН-шилд который мне теперь без надобности(((
Что сделано: 1) прокинута 5ти жильная шина от подрулевого кольца к планшету, там как раз 5 жил, 4 для USB и 5-я для подсветки всего что стоит на руле. 2) приклеены все детали (хаб, провода, 1 ардуина и т.д.) на заднюю крышку планшета, что-бы вытаскивая планшет всё висело на нем одним скопом. Занялся 2й ардуиной, пока сделано вот что из рулевого Ауди джойстика справа, он же громкостная часть. с лева будет примерно тоже самое, только там нужно придумать как переключать треки энкодером)
__________________
AUDI A6 (C5) V6 2.8L |
15.03.2016, 18:46 | #57 |
Старший Пользователь
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
|
Руль подключен, воткнут в ЮСБ.
Система собрана и работает, вылез баг: - при нажиме на сигнал отваливается ардуина, точнее она зависает и без перезагрузки работать не хочет. на что может мыкать масса пока не нашел.
__________________
AUDI A6 (C5) V6 2.8L |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|