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

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Дополнительные устройства (http://pccar.ru/forumdisplay.php?f=177)
-   -   Резистивные кнопки под андроид (http://pccar.ru/showthread.php?t=18478)

Tommy_Gun 06.04.2016 04:47

Мужики, ткните. Не могу найти... Кто- то из форумчан выкладывал скетчи и даже видео, где по USB ардуино рулит не только кнопками, но и яркостью экрана Nexus. Планируются кнопки на морду нексуса изготовленные 3d печатью. Они закроют родной датчик освещенности, а с ним очень удобно.

DelleTenebre 06.04.2016 05:54

Tommy_Gun, может быть он, проект KeyRes?

Tommy_Gun 07.04.2016 00:57

DelleTenebre, спасибо!
Просматривал его видео в этой ветке, только с двумя энкодерами. Это сбили с толку.
Вот уж точно - нет предела совершенству. Два года пилю свой проект. Дорос до двусторонней платы управления, на штыревом соединении с внутренней, ответной платой в нексусе и полным отказом от реле с кнопками от старого Гу на морде нексуса и управлением на руле. В общем законченный инсталл. А тут на тебе! Друг закончил сборку 3д принтера... И понеслось...

olllegan 09.04.2016 16:31

Подскажите как добавить сочетания кнопок. Использую Arduino Leonardo. Взял скетч из поста #307. Все прекрасно работает.
Пытаюсь добавить ещё одно сочетание (нужно CTR+Z и CTRL+B) на основе сочетания Alt+Tab не получается.

oleg707 09.04.2016 18:25

Цитата:

Сообщение от Tommy_Gun (Сообщение 357513)
Мужики, ткните. Не могу найти... Кто- то из форумчан выкладывал скетчи и даже видео, где по USB ардуино рулит не только кнопками, но и яркостью экрана Nexus. Планируются кнопки на морду нексуса изготовленные 3d печатью. Они закроют родной датчик освещенности, а с ним очень удобно.

они еще камеру фронтальную закроют. может дырку там просверлить или прозрачный световод вставить можно?

olllegan 11.04.2016 00:04

Цитата:

Сообщение от olllegan (Сообщение 357827)
Подскажите как добавить сочетания кнопок. Использую Arduino Leonardo. Взял скетч из поста #307. Все прекрасно работает.
Пытаюсь добавить ещё одно сочетание (нужно CTR+Z и CTRL+B) на основе сочетания Alt+Tab не получается.

Ещё раз прошу помощи в правке скетча.
Вот скетч
PHP код:

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

int analogPin=0// пин для подключения кнопок, по умолчанию A0  

int release_button 0// значение при отпущенных кнопках  
int button_release_range 50// диапазон значения + - при отпущенных кнопках  
int button_range 20// диапазон значения нажатых кнопок + -  
int time_holding 300// время для удержания кнопок в миллисекундах  
int time_tinkling 30// время исключающее дребезг контактов в миллисекундах 
int ctrl_z 740// значение кнопки которая будет работать как CTRL + Z 
int alt_tab 854// значение кнопки которая будет работать как Alt + Tab  
int next 409// значение кнопки которая будет работать как Next при коротком нажатии и Fast Forward при удержании  
int previous 667// значение кнопки которая будет работать как Previous при коротком нажатии и Rewind при удержании  
int play_pause 555// значение кнопки которая будет работать как Play/Pause при коротком нажатии и Mute при удержании  

//**************************************************************************  

int data;   
unsigned long flag 0;   
unsigned long eventTime 0;   
unsigned long pauseMillis 0;  

void setup()   
{  
analogReference(DEFAULT); // подключение внутреннего напряжение AVCC к выводу AREF (опорное напряжение)  
Keyboard.begin();   
}   

void loop()   
{   
data=analogRead(analogPin);   
if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == 0)   
{   
eventTime=millis();   
}   

//********************** Ctrl+Z ************************************    
if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-&& data >= ctrl_z button_range && data <= ctrl_z button_range)   
{    
flag 1;   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == && pauseMillis == 0)   
{   
Keyboard.press(KEY_LEFT_CTRL);   
Keyboard.press('z');   
Keyboard.release('z');   
Keyboard.press('z');   
Keyboard.release('z');   
flag 0;   
pauseMillis millis();   
}   

if(
data>=release_button button_release_range && data<=release_button button_release_range && flag == && pauseMillis != 0)   
{   
Keyboard.press('z');   
Keyboard.release('z');   
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 >= ctrl_z button_range && data <= ctrl_z button_range && flag == 1)   
{    
flag 0;   
}   

  
//********************** AltTab + Ещё что то ************************************    

if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-&& 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 == && 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 == && 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()-eventTime<time_tinkling && millis()-eventTime<time_holding-&& 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 == || data >= next button_range && data <= next button_range && flag == 3)   
{    
Remote.forward();   
flag 3;   
Remote.clear();   
delay(100);   
}   
//********************** Previous и Rewind ************************************    

if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-&& 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 == || data >= previous button_range && data <= previous button_range && flag == 3)   
{    
Remote.rewind();  
flag 3;   
Remote.clear();   
delay(100);   
}   

//********************** Play/pause + Mute ************************************    

if(millis()-eventTime<time_tinkling && millis()-eventTime<time_holding-&& 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 == || data>=release_button button_release_range && data<=release_button button_release_range && flag == || data>=release_button button_release_range && data<=release_button button_release_range && flag == 6)   
{   
flag 0;   
}    


Без раздела ******Ctrl+Z****** всё работает. Как только добавляю раздел ******Ctrl+Z****** кнопка Alt+Tab и кнопка на которой находится Ctrl+Z выдают одну и туже команду которая соответствует команде Ctrl+Z. В чём подвох?

Tommy_Gun 11.04.2016 06:17

Цитата:

Сообщение от oleg707 (Сообщение 357833)
они еще камеру фронтальную закроют. может дырку там просверлить или прозрачный световод вставить можно?

Идея рулить с дуины яркостью планшета давно назрела, только я вот с Андроидом не особо дружу в плане его расковыривания. (Прошить, рутануть и т.д по инструкции запросто, а на уровне программирования - 0. (Хотя под винду пишу мелкие програмулины). У меня подсветка приборной панели регулируется вручную позиционным резистором. Вот все в одну кучу собрать хотелось бы- и планшет и приборка.
А камера за два года эксплуатации так и не пригодилась. Была мысль каждый раз при просыпании планшета делать фото и отправлять на сервер (на случай угона). Но планшет расположен так, что водитель не попадает в кадр).... Через скайп тоже не общаюсь с машины... Больше идей для камеры у меня нет. (так что камеру не жалко)

Alekssandr 11.04.2016 12:04

Цитата:

Сообщение от Tommy_Gun (Сообщение 357994)
Идея рулить с дуины яркостью планшета давно назрела, только я вот с Андроидом не особо дружу в плане его расковыривания.

без приложения это никак не сделать, я уже записывал видео как это можно сделать. Но пока руки не доходят чтоб всё до ума довести.

Но в принципе могу сделать простенькое приложение которое работало бы в фоне и принимала значения от 0 до 255 для регулировки яркости дисплея с ардуино.

вот здесь я управлял светодиодом с системной яркости андроид.


Tommy_Gun 11.04.2016 13:21

Цитата:

Сообщение от Alekssandr (Сообщение 358012)
без приложения это никак не сделать, я уже записывал видео как это можно сделать. Но пока руки не доходят чтоб всё до ума довести.

Но в принципе могу сделать простенькое приложение которое работало бы в фоне и принимала значения от 0 до 255 для регулировки яркости дисплея с ардуино.

Приложение бы пригодилось.

Потихоньку ковыряю app inventor. До коммуникации со сторонним железом пока далеко. В далеких планах - управлять питанием усилителей, подогревом сидений, климатом, контролировать напряжение АКБ авто (отключение усилителей при падении ниже установленного). Ну и чего еще душа пожелает...

oleg707 11.04.2016 13:30

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


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

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