PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > Всё Остальное > Проекты > Рабочий журнал

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2015, 23:38   #51
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
TransF is on a distinguished road
По умолчанию

Сделал аквапринт всех деталей салона ну и естественно центральной рамки планшета)

https://yadi.sk/i/S0SFbfJGjCyFM

Уже всё установлено, думаю завтра сфоткаю и выложу с миниатюрами)))
__________________

AUDI A6 (C5) V6 2.8L

Последний раз редактировалось TransF; 21.09.2015 в 00:10.
TransF вне форума   Ответить с цитированием
Старый 22.09.2015, 00:21   #52
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
TransF is on a distinguished road
По умолчанию

Скетч для использования рулевых кнопок и энкодера под планшетом

//****************** Здесь необходимо указать свои значения ***************

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.
TransF вне форума   Ответить с цитированием
Старый 09.10.2015, 21:27   #53
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
TransF is on a distinguished road
По умолчанию

Пока жду новый руль из Питера, всё доведено до полного работоспособного состояния.

Планшет писается от батареи (пока)
в него без доп питания воткнут Хаб на gl850
В него в сою очередь флешка и ардуина, в которой залит скетч для энкодера

PHP код:
//Скетч регулятора громкости на энкодере для Arduino PRO MICRO 
// энкодер на 8 и 9 пинах  выводы подтянуты к питанию, 
// конденсаторы на землю желательно. 
//кнопка энкодера на 7 ноге, притянута к + программно. конденсатор желательно. 
void setup() {             
PCICR=1<<PCIE0
PCMSK0=(1<<PCINT5)|(1<<PCINT4); 
pinMode (7,INPUT_PULLUP); 
pinMode (8,INPUT); 
pinMode (9,INPUT); 
attachInterrupt(4key_muteFALLING); 
Keyboard.begin(); 

void loop() { } 
  
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_nnew_n

  
void key_mute() {         
        
Remote.mute();  
        
delay(10);  
        
Remote.clear();} 
включение планшета с кнопки энкодера.
Что-то недоверяю NDS15 заказал Kis-ы и CAN-шилд для чтения рулевых кнопок.
__________________

AUDI A6 (C5) V6 2.8L
TransF вне форума   Ответить с цитированием
Старый 14.10.2015, 21:18   #54
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
TransF is on a distinguished road
По умолчанию

Как всегда всё не бывает просто)))
Был приобретён мультируль от Ауди Q7 2008г.
Как выяснилось внутри него стоит ещё 2 энкодера(((
Решил ставить 2 отдельную ардуину и в скетч прописать 2 энкодера и всего 4 кнопки.
На руле - в планшете
Mode - alt+tab
Mute - play+pause
На энкодере слева - ещё не решил.
На энкодере справа - Mute
Энкодер слева - трек вперёд назад
Энкодер справа - дублирует тот что на планшете vol- и vol+.
Миниатюры
Нажмите на изображение для увеличения
Название: IMG_20151014_201023.jpg
Просмотров: 769
Размер:	60.4 Кб
ID:	41286  
__________________

AUDI A6 (C5) V6 2.8L

Последний раз редактировалось TransF; 05.11.2015 в 23:03.
TransF вне форума   Ответить с цитированием
Старый 05.11.2015, 22:59   #55
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
TransF is on a distinguished road
По умолчанию

Пока идёт ардуина из Китая подключил и поставил планшет в машину ,совсем.
Вылезла проблема, шумы в звуковом тракте, при чем когда выключаю дисплей всё хорошо звук чистый, как включаю треск и шип, как раньше на сиди-ромах.
Кто сталкивался помогите?)
__________________

AUDI A6 (C5) V6 2.8L
TransF вне форума   Ответить с цитированием
Старый 21.11.2015, 22:28   #56
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
TransF is on a distinguished road
По умолчанию

Ну вот дождался, пришла вторая ардуина для рулевого управления. так же пришел КАН-шилд который мне теперь без надобности(((
Что сделано:
1) прокинута 5ти жильная шина от подрулевого кольца к планшету, там как раз 5 жил, 4 для USB и 5-я для подсветки всего что стоит на руле.
2) приклеены все детали (хаб, провода, 1 ардуина и т.д.) на заднюю крышку планшета, что-бы вытаскивая планшет всё висело на нем одним скопом.

Занялся 2й ардуиной, пока сделано вот что из рулевого Ауди джойстика справа, он же громкостная часть.

с лева будет примерно тоже самое, только там нужно придумать как переключать треки энкодером)
Миниатюры
Нажмите на изображение для увеличения
Название: IMG_20151103_220107.jpg
Просмотров: 784
Размер:	57.5 Кб
ID:	41729   Нажмите на изображение для увеличения
Название: 1448131294493-255578643.jpg
Просмотров: 784
Размер:	71.8 Кб
ID:	41730  
__________________

AUDI A6 (C5) V6 2.8L
TransF вне форума   Ответить с цитированием
Старый 15.03.2016, 18:46   #57
TransF
Старший Пользователь
 
Регистрация: 14.06.2009
Город: Ставрополь
Регион: 26
Машина: AUDI A6 (C5) 2000г.в. V6 2.8L
Сообщений: 131
TransF is on a distinguished road
По умолчанию

Руль подключен, воткнут в ЮСБ.
Система собрана и работает, вылез баг:

- при нажиме на сигнал отваливается ардуина, точнее она зависает и без перезагрузки работать не хочет.
на что может мыкать масса пока не нашел.
__________________

AUDI A6 (C5) V6 2.8L
TransF вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 13:20.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot