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

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

vlad22 18.11.2014 11:51

Всем доброго времени.
Сразу прошу ногами не пинать
Вопрос -имею Controller Board VS-TY2662-V1 и хочу избавиться от панельки с кнопками для управления монитором. Дайте совет или подскажите где можно взять информацию.
Владимир

ВладимирC 03.12.2014 13:40

Появилась уверенность, что в штатных кнопках у меня стоит конденсатор, для гашения дребезга контактов. Потому как чем короче нажатие (до какого то определенного времени), тем больший код выдают кнопки. Еще одно подтверждение: чем больше по номиналу ставлю резистор на подтяжку по высокому уровню, тем больше становится время для устаканивания кода.

Alex_St 04.12.2014 17:39

Цитата:

Сообщение от vlad22 (Сообщение 311364)
Всем доброго времени.
Сразу прошу ногами не пинать
Вопрос -имею Controller Board VS-TY2662-V1 и хочу избавиться от панельки с кнопками для управления монитором. Дайте совет или подскажите где можно взять информацию.
Владимир

А что именно надо после избавления?

demtro 10.01.2015 23:19

А можно ли собрать на этом модуле? Если да, то помогите со схемой и кодом

lti1 11.01.2015 01:01

Цитата:

Сообщение от demtro (Сообщение 316797)
А можно ли собрать на этом модуле? Если да, то помогите со схемой и кодом

Это Arduino Pro Micro, аналог Arduino Leonardo только меньше габариты, про них в основном в этой ветке и говорят.
http://pccar.ru/showpost.php?p=277286&postcount=182
http://pccar.ru/showpost.php?p=288838&postcount=214

demtro 11.01.2015 08:33

А по схеме? На его схеме я не нашёл 5v

murano 11.01.2015 10:24

Цитата:

Сообщение от demtro (Сообщение 316819)
не нашёл 5v

Думаю что это Vcc.

lti1 11.01.2015 12:30

Цитата:

Сообщение от demtro (Сообщение 316819)
А по схеме? На его схеме я не нашёл 5v

Для питания Arduino? Она питается по USB.

demtro 11.01.2015 23:56

Цитата:

Сообщение от murano (Сообщение 248366)

Вот тут подключается на GND и 5v, а на том который я указывал куда подключать?

murano 12.01.2015 11:29

RAW — внешнее питание для платы. Когда плата запитана от порта USB, на данном выводе будет напряжение около 4,8В (5В на USB минус падение на диоде Шоттки). Внешний источник питания следует подключать через этот вывод, допустимое напряжение — до 12В
VCC — напряжение, подаваемое на микроконтроллер (выход после регулятора напряжения на плате). Если плата запитана от внешнего источника, этот вывод можно использовать для питания других устройств стабилизированным напряжением
RST — вывод сброса микроконтроллера, подтянут к +5В резистором на 10кОм. Для сброса микроконтроллера его следует соединить с GND
GND — общий.

Daniel 12.01.2015 11:40

Подключать 5В нужно на VCC, предварительно J1 спаять между собой.

gooffich 16.01.2015 12:18

ПОМОГИТЕ НАПИСАТЬ СКЕТЧ ДЛЯ LEONARDO
 
Приобрёл новую плату Leonardo. измерил показание кнопок:

Громкость + 393

громкость - 296

трек + 121

трек - 166

плей.пауза 32

моде 86

помогите написать скетч. если есть такая возможность, чтоб работала экранная клавиатура.

Chubaka885 16.01.2015 15:51

Цитата:

Сообщение от gooffich (Сообщение 317587)
Приобрёл новую плату Leonardo. измерил показание кнопок:

Громкость + 393

громкость - 296

трек + 121

трек - 166

плей.пауза 32

моде 86

помогите написать скетч. если есть такая возможность, чтоб работала экранная клавиатура.

Эту тему пошерстить не судьба?
Ну всего же 30 страниц. Тридцаааать. Не триста же....

gooffich 16.01.2015 16:00

Цитата:

Сообщение от Chubaka885 (Сообщение 317596)
Эту тему пошерстить не судьба?
Ну всего же 30 страниц. Тридцаааать. Не триста же....

пробовал. не получается.

Chubaka885 16.01.2015 16:08

Цитата:

Сообщение от gooffich (Сообщение 317597)
пробовал. не получается.

Не получается что?, прочитать тему и найти готовый скетч.
Что касается того что бы работала экранная клавиатура, то это не зависит от скетча. Читайте эту тему

gooffich 16.01.2015 16:41

Цитата:

Сообщение от Chubaka885 (Сообщение 317598)
Не получается что?, прочитать тему и найти готовый скетч.
Что касается того что бы работала экранная клавиатура, то это не зависит от скетча. Читайте эту тему

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

Chubaka885 16.01.2015 19:19

Цитата:

Сообщение от gooffich (Сообщение 317601)
Скетчи разные пробовал. у меня при подключении ардуино к пк или планшету начинаются переполох. либо звук вкл,выкл. какие приложения открыты воспр. остан. громкость бегает туда сюда и многое бругое.
Да, что выбирать перед заливкой скетча фаил-параметры-....?

Попробуйте залить этот скетч.
Перед заливкой поменяйте файлы как написано в том сообщении, поменяйте номер аналогового пина на свой, и подставьте свои значения кнопок.
В параметрах менять нечего не надо, главное чтобы в сервис -> плата - было выбранно Arduino Leonardo и в сервис -> последовательный порт -был выбран номер порта вашей леонардо.
Для заливки скетча используйте ПО Arduino 1.0.4-r2 или Arduino 1.0.5-r2 в более высоких версиях замена файлов невозможна, там необходимо вносить изменения в сам файл.

А "переполох" у вас скорей всего из за неправильного подключения резистивной кнопки!

gooffich 18.01.2015 17:40

Цитата:

Сообщение от Chubaka885 (Сообщение 317621)
Попробуйте залить этот скетч.
Перед заливкой поменяйте файлы как написано в том сообщении, поменяйте номер аналогового пина на свой, и подставьте свои значения кнопок.
В параметрах менять нечего не надо, главное чтобы в сервис -> плата - было выбранно Arduino Leonardo и в сервис -> последовательный порт -был выбран номер порта вашей леонардо.
Для заливки скетча используйте ПО Arduino 1.0.4-r2 или Arduino 1.0.5-r2 в более высоких версиях замена файлов невозможна, там необходимо вносить изменения в сам файл.

А "переполох" у вас скорей всего из за неправильного подключения резистивной кнопки!

Спасибо! Это скедч подкорректировал, почти подошёл. Единственный минус - как мне сделать чтоб пауза\плей была на другой кнопке а не на кнопке моде при удержании? скетч прилагаю

int analogPin=0; //пин для подключения кнопок
int data;
unsigned long flag = 0;
unsigned long eventTime = 0;
unsigned long pauseMillis = 0;

void setup()
{
Keyboard.begin();
}

void loop()
{
data=analogRead(analogPin); //читаем значение нажатой кнопки

//********************** Громкость ************************************

if(data>=1023 && flag == 0) // все кнопки отпущены
{
eventTime=millis();
}

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=884 && data<=904 && flag == 0) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
Remote.increase();
flag = 5;
delay(10);
Remote.clear();
}

if(millis()-eventTime>500 && data>=884 && data<=904 && flag == 5 || data>=210 && data<=230 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.increase(); // действие после удержание кнопки, Увеличить громкость каждые 0,1 секунды
flag = 3;
Remote.clear();
delay(100);
}

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=824 && data<=844 && flag == 0) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
Remote.decrease();
flag = 6;
delay(10);
Remote.clear();
}

if(millis()-eventTime>500 && data>=824 && data<=844 && flag == 6 || data>=457 && data<=477 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.decrease(); // действие после удержание кнопки, Уменьшить громкость каждые 0,1 секунды
flag = 3;
Remote.clear();
delay(100);
}

//********************** AltTab + Play/pause ************************************

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=462 && data<=482) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
flag = 1;
}

if(data>=1023 && flag == 1 && pauseMillis == 0) // действие после короткого нажатия кнопки, Alt+Tab
{
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>=1023 && flag == 1 && pauseMillis != 0) // действие после короткого повторного нажатия кнопки, Alt+Tab
{
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
flag = 0;
pauseMillis = millis();
}

if(pauseMillis && millis()-pauseMillis >= 800 && data>=1023) // && flag == 7 && data>=950)
{
flag = 0;
pauseMillis = 0;
Keyboard.releaseAll();
}

if(millis()-eventTime>500 && data>=567 && data<=587 && flag == 1) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.play_pause(); // действие после удержание кнопки, воспроизведение / пауза
flag = 0;
delay(10);
Remote.clear();
}
//********************** Next и Fast Forward ************************************

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=572 && data<=582) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
flag = 2;
}

if(data>=1023 && flag == 2) // действие после короткого нажатия кнопки, Next
{
Remote.next();
flag = 0;
delay(10);
Remote.clear();
}

if(millis()-eventTime>500 && data>=572 && data<=582 && flag == 2 || data>=0 && data<=10 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.forward(); // действие после удержание кнопки, Fast Forward
flag = 3;
Remote.clear();
delay(100);
}
//********************** Previous и Rewind ************************************

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=671 && data<=691) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
flag = 4;
}

if(data>=1023 && flag == 4) // действие после короткого нажатия кнопки, Previous
{
Remote.previous();
flag = 0;
delay(10);
Remote.clear();
}

if(millis()-eventTime>500 && data>=671 && data<=691 && flag == 4 || data>=74 && data<=94 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.rewind(); // действие после удержание кнопки, Rewind
flag = 3;
Remote.clear();
delay(100);
}

if(data>=1023 && flag == 3 || data>=950 && flag == 5 || data>=950 && flag == 6) // действие после отпускания кнопки
{
flag = 0;
}
}

lti1 18.01.2015 23:49

Цитата:

Сообщение от gooffich (Сообщение 317824)
Единственный минус - как мне сделать чтоб пауза\плей была на другой кнопке а не на кнопке моде при удержании?

То есть, что бы AltTab и Play/pause были на разных кнопках и действовали при коротком нажатии? Если да, то так:
PHP код:

int analogPin=0//пин для подключения кнопок
int data;
unsigned long flag 0;
unsigned long eventTime 0;
unsigned long pauseMillis 0;

void setup()
{
Keyboard.begin();
}

void loop()
{
data=analogRead(analogPin); //читаем значение нажатой кнопки

//********************** Громкость ************************************

if(data>=1023 && flag == 0// все кнопки отпущены
{
eventTime=millis();
}

if(
millis()-eventTime>10 && millis()-eventTime<499 && data>=884 && data<=904 && flag == 0// короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)

Remote.increase();
flag 5;
delay(10);
Remote.clear();
}

if(
millis()-eventTime>500 && data>=884 && data<=904 && flag == || data>=210 && data<=230 && flag == 3// удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)

Remote.increase(); // действие после удержание кнопки, Увеличить громкость каждые 0,1 секунды
flag 3;
Remote.clear();
delay(100);
}

if(
millis()-eventTime>10 && millis()-eventTime<499 && data>=824 && data<=844 && flag == 0// короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)

Remote.decrease();
flag 6;
delay(10);
Remote.clear();
}

if(
millis()-eventTime>500 && data>=824 && data<=844 && flag == || data>=457 && data<=477 && flag == 3// удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)

Remote.decrease(); // действие после удержание кнопки, Уменьшить громкость каждые 0,1 секунды
flag 3;
Remote.clear();
delay(100);
}

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

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=462 && data<=482// короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)

flag 1;
}

if(
data>=1023 && flag == && pauseMillis == 0// действие после короткого нажатия кнопки, Alt+Tab
{
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>=1023 && flag == && pauseMillis != 0// действие после короткого повторного нажатия кнопки, Alt+Tab
{
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
flag 0;
pauseMillis millis();
}

if(
pauseMillis && millis()-pauseMillis >= 800 && data>=1023// && flag == 7 && data>=950)
{
flag 0;
pauseMillis 0;
Keyboard.releaseAll();
}

if(
millis()-eventTime>500 && data>=567 && data<=587 && flag == 1// удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)

//Remote.play_pause(); // действие после удержание кнопки, Ещё что то
flag 0;
//delay(10);
//Remote.clear();
}
//********************** Next и Fast Forward ************************************ 

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=572 && data<=582// короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)

flag 2;
}

if(
data>=1023 && flag == 2// действие после короткого нажатия кнопки, Next
{
Remote.next();
flag 0;
delay(10);
Remote.clear();
}

if(
millis()-eventTime>500 && data>=572 && data<=582 && flag == || data>=&& data<=10 && flag == 3// удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)

Remote.forward(); // действие после удержание кнопки, Fast Forward
flag 3;
Remote.clear();
delay(100);
}
//********************** Previous и Rewind ************************************ 

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=671 && data<=691// короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)

flag 4;
}

if(
data>=1023 && flag == 4// действие после короткого нажатия кнопки, Previous
{
Remote.previous();
flag 0;
delay(10);
Remote.clear();
}

if(
millis()-eventTime>500 && data>=671 && data<=691 && flag == || data>=74 && data<=94 && flag == 3// удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)

Remote.rewind(); // действие после удержание кнопки, Rewind
flag 3;
Remote.clear();
delay(100);
}

//********************** Play/pause + Ещё что то ************************************ 

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=111 && data<=111// короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)

flag 7;
}

if(
data>=1023 && flag == 7// действие после короткого нажатия кнопки, воспроизведение / пауза
{
Remote.play_pause(); 
flag 0;
delay(10);
Remote.clear();
}

if(
millis()-eventTime>500 && data>=111 && data<=111 && flag == 7// удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)

//Remote.play_pause(); // действие после удержание кнопки, Ещё что то
flag 0;
//delay(10);
//Remote.clear();
}

if(
data>=1023 && flag == || data>=1023 && flag == || data>=1023 && flag == 6// действие после отпускания кнопки
{
flag 0;



Измените data<=111 на Ваши значения.

gooffich 19.01.2015 12:23

Спасибо огромное!Теперь как часики.

demtro 29.01.2015 19:00

Ребят проблемка есть, заливаю вот этот скетч:
Цитата:

int analogPin=0; //пин для подключения кнопок
int data;
unsigned long flag = 0;
unsigned long eventTime = 0;
unsigned long pauseMillis = 0;

void setup()
{
Keyboard.begin();
}

void loop()
{
data=analogRead(analogPin); //читаем значение нажатой кнопки

//********************** Громкость ************************************

if(data>=1023 && flag == 0) // все кнопки отпущены
{
eventTime=millis();
}

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=884 && data<=904 && flag == 0) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
Remote.increase();
flag = 5;
delay(10);
Remote.clear();
}

if(millis()-eventTime>500 && data>=884 && data<=904 && flag == 5 || data>=210 && data<=230 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.increase(); // действие после удержание кнопки, Увеличить громкость каждые 0,1 секунды
flag = 3;
Remote.clear();
delay(100);
}

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=824 && data<=844 && flag == 0) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
Remote.decrease();
flag = 6;
delay(10);
Remote.clear();
}

if(millis()-eventTime>500 && data>=824 && data<=844 && flag == 6 || data>=457 && data<=477 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.decrease(); // действие после удержание кнопки, Уменьшить громкость каждые 0,1 секунды
flag = 3;
Remote.clear();
delay(100);
}

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

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=462 && data<=482) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
flag = 1;
}

if(data>=1023 && flag == 1 && pauseMillis == 0) // действие после короткого нажатия кнопки, Alt+Tab
{
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>=1023 && flag == 1 && pauseMillis != 0) // действие после короткого повторного нажатия кнопки, Alt+Tab
{
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
flag = 0;
pauseMillis = millis();
}

if(pauseMillis && millis()-pauseMillis >= 800 && data>=1023) // && flag == 7 && data>=950)
{
flag = 0;
pauseMillis = 0;
Keyboard.releaseAll();
}

if(millis()-eventTime>500 && data>=567 && data<=587 && flag == 1) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
{
//Remote.play_pause(); // действие после удержание кнопки, Ещё что то
flag = 0;
//delay(10);
//Remote.clear();
}
//********************** Next и Fast Forward ************************************

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=572 && data<=582) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
flag = 2;
}

if(data>=1023 && flag == 2) // действие после короткого нажатия кнопки, Next
{
Remote.next();
flag = 0;
delay(10);
Remote.clear();
}

if(millis()-eventTime>500 && data>=572 && data<=582 && flag == 2 || data>=0 && data<=10 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.forward(); // действие после удержание кнопки, Fast Forward
flag = 3;
Remote.clear();
delay(100);
}
//********************** Previous и Rewind ************************************

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=671 && data<=691) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
flag = 4;
}

if(data>=1023 && flag == 4) // действие после короткого нажатия кнопки, Previous
{
Remote.previous();
flag = 0;
delay(10);
Remote.clear();
}

if(millis()-eventTime>500 && data>=671 && data<=691 && flag == 4 || data>=74 && data<=94 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
{
Remote.rewind(); // действие после удержание кнопки, Rewind
flag = 3;
Remote.clear();
delay(100);
}

//********************** Play/pause + Ещё что то ************************************

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=165 && data<=185) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
{
flag = 7;
}

if(data>=1023 && flag == 7) // действие после короткого нажатия кнопки, воспроизведение / пауза
{
Remote.play_pause();
flag = 0;
delay(10);
Remote.clear();
}

if(millis()-eventTime>500 && data>=165 && data<=185 && flag == 7) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
{
//Remote.play_pause(); // действие после удержание кнопки, Ещё что то
flag = 0;
//delay(10);
//Remote.clear();
}

if(data>=1023 && flag == 3 || data>=1023 && flag == 5 || data>=1023 && flag == 6) // действие после отпускания кнопки
{
flag = 0;
}
}

кнопки громкости при удержании увеличивают/уменьшают на 1 деление и останавливаюся, next вообще не реагирует, замерил кнопки руля, получил очень странные числа: mute 680 Ом, next 4.4 kOm, prev 6.5 kOM, громкость "+" 22.6 кОм, громкость "-" 14,5 кОм, Mode (ALT+TAB....TAB....TAB) 2.8 кОм.
Какая-то очень странная разница между mute и всем остальным.
Скетч брал в Драйва у другого салановода (по идее кнопки должны быть одинаковыми)

lti1 29.01.2015 19:28

Цитата:

Сообщение от demtro (Сообщение 319147)
Ребят проблемка есть, заливаю вот этот скетч:
кнопки громкости при удержании увеличивают/уменьшают на 1 деление и останавливаюся, next вообще не реагирует, замерил кнопки руля, получил очень странные числа: mute 680 Ом, next 4.4 kOm, prev 4.4 kOM, громкость "+" 22.6 кОм, громкость "-" 14,5 кОм, Mode (ALT+TAB....TAB....TAB) 2.8 кОм.
Какая-то очень странная разница между mute и всем остальным.
Скетч брал в Драйва у другого салановода (по идее кнопки должны быть одинаковыми)

Залейте сначала этот скетч и считайте коды своих кнопок через "монитор порта" Arduino Software (IDE), потом подставьте эти значения в скетч.
PHP код:

int analogPin=0//пин для подключения кнопок
int data;

void setup()
{
Serial.begin(9600);
}

void loop()
{
data=analogRead(analogPin); //читаем значение нажатой кнопки
Serial.println(data);
delay(1000);



demtro 29.01.2015 19:33

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

lti1 29.01.2015 19:44

Цитата:

Сообщение от demtro (Сообщение 319152)
а можно ли это сделать через планшет? просто кнопки закреплены в руле и с ноутом не хочется туда идти

Нужен какой нибудь софт, который сможет читать данные с порта. С ноутом не придется бежать домой, что бы залить залить новый скетч, можно будет все сразу сделать в машине и проверить.

demtro 29.01.2015 19:55

я правильно понимаю что значение кнопки это вот это - "data>=165 && data<=185" и для него задается интервал?

lti1 29.01.2015 20:04

Цитата:

Сообщение от demtro (Сообщение 319156)
я правильно понимаю что значение кнопки это вот это - "data>=165 && data<=185" и для него задается интервал?

Да. Личку проверьте.

lti1 07.02.2015 22:47

Вложений: 2
Соберу всю информацию по одному из решений в одном месте, у кого есть возможность закрепите ссылку в первом сообщении.
Работает только с Arduino Pro Micro и Arduino Leonardo на чипе ATmega32u4.
Для начала меняем в папке \arduino-1.0.5\hardware\arduino\cores\arduino для IDE 1.0.5 или \arduino-1.6.5-r5\hardware\arduino\avr\cores\arduino для IDE 1.6.5 меняете два файла USBAPI.h, HID.cpp на те, что во вложении этого сообщения, при этом версия ПО Arduino Software IDE должна быть 1.0.5, скачать setup exe, скачать zip ИЛИ 1.6.5, на других не проверял.
После заливаете этот скетч и считайте коды всех кнопок через "монитор порта" Arduino Software (IDE).

PHP код:

int analogPin=0//пин для подключения кнопок
int data;

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

void loop()
{
data=analogRead(analogPin); //читаем значение нажатой кнопки
Serial.println(data);
delay(1000);


(Подробная инструкция, как считать коды кнопок находится в архиве Вложение 52732)

Подключаете кнопки к Arduino по следующим схемам, с подтяжкой к - или к +. Номинал сопротивления ~20 кОм.
Вложение 38555
Потом заливаете этот скетч, только в начале скетча указываете свои значения, то есть вместо 111, 222, 333, 444, 555, 777 указываете значения своих кнопок, а также значение при отпущенных кнопках, в зависимости от схемы подключения будут либо ближе 0 либо ближе к 1023:
PHP код:

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

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

int release_button 1023// значение при отпущенных кнопках 
int button_release_range 50// диапазон значения + - при отпущенных кнопках 
int button_range 5// диапазон значения нажатых кнопок + - 
int time_holding 500// время для удержания кнопок в миллисекундах 
int time_tinkling 30// время исключающее дребезг контактов в миллисекундах 
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()  

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();  
}  

//********************** Громкость ************************************ 

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

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

//********************** 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;  
}   


Алгоритм работы такой: короткое нажатие, более 10 (int time_tinkling = 10; можно менять в скетче) и менее 500 миллисекунд (int time_holding = 500; можно менять в скетче) - Play/pause; длинное, более 500 миллисекунд (int time_holding = 500; можно менять в скетче) - Mute.
Тоже самое с Next и Fast Forward, Previous и Rewind. При удержании увеличения и уменьшения громкости, увеличивает или уменьшает громкость на 10 делений в секунду, а при коротком нажатии, менее 500 миллисекунд - увеличивает или уменьшает громкость на 1 деление.
Alt + Tab, при первом нажатии эмулирует Alt и два раза Tab, то есть переходит предыдущему открытому приложении и в течении 0,8 секунды удерживает Alt, а повторные нажатия на кнопку в течении этого времени эмулируют только Tab. На удержание ни чего не назначен, можно добавить при необходимости.

Chubaka885 07.02.2015 23:15

lti1 Отлично :good2:
Только добавь, что заливать скетч нужно с релизом ПО Arduino не выше 1.0.5. А лучше просто указать 1.0.5 и всё. Часто качают 1.0.6 с забугорного обменника и замена библиотек не проходит. Мне уже не раз задавали этот вопрос.

murano 07.02.2015 23:19

Previous и Rewind я так понимаю ускоряют и замедляют воспроизведение трека. А еcть команды которые листают папки (альбомы)?

Chubaka885 07.02.2015 23:28

Цитата:

Сообщение от murano (Сообщение 319978)
Previous и Rewind я так понимаю ускоряют и замедляют воспроизведение трека. А еcть команды которые листают папки (альбомы)?

Нету. poweramp умеет переключать папки двойным нажатием переключения треков. Немного не удобно, но работает.

lti1 07.02.2015 23:32

Цитата:

Сообщение от Chubaka885 (Сообщение 319977)
lti1 Отлично :good2:
Только добавь, что заливать скетч нужно с релизом ПО Arduino не выше 1.0.5. А лучше просто указать 1.0.5 и всё. Часто качают 1.0.6 с забугорного обменника и замена библиотек не проходит. Мне уже не раз задавали этот вопрос.

Добавил.
Цитата:

Сообщение от murano (Сообщение 319978)
Previous и Rewind я так понимаю ускоряют и замедляют воспроизведение трека. А еcть команды которые листают папки (альбомы)?

Ни одно HID устройство такое делать не умеет в Андройде. Или как предложил Chubaka885:
Цитата:

Сообщение от Chubaka885 (Сообщение 319979)
Нету. poweramp умеет переключать папки двойным нажатием переключения треков. Немного не удобно, но работает.

или с помощью Remote steering wheel control + Tasker + Action Box - Tasker Plug-in и работает только в PowerAMP.

slon25 18.02.2015 15:10

Может подскажите можно ли использвать такие устройства: джойстик, клава .., кнопки , вместо штатных кнопок, так как у меня их нет. Вот, например джойстик к автомагнитолам SONY RM-X2S
https://www.drive2.ru/l/288230376152759568/ --------------------------------------------------------------------------------

lti1 18.02.2015 16:25

slon25, ссылка не работает.

slon25 18.02.2015 16:50

Цитата:

Сообщение от lti1 (Сообщение 321043)
slon25, ссылка не работает.

подправил

lti1 18.02.2015 17:32

Цитата:

Сообщение от slon25 (Сообщение 321039)
Может подскажите можно ли использвать такие устройства: джойстик, клава .., кнопки , вместо штатных кнопок, так как у меня их нет. Вот, например джойстик к автомагнитолам SONY RM-X2S
https://www.drive2.ru/l/288230376152759568/ --------------------------------------------------------------------------------

А почему нет, это резистивный пульт. Пообщайтесь Sergey595, он как раз такой пульт сейчас настраивает на основе этого поста.

murano 18.02.2015 17:51

Для первоначальных тестов использовал именно такой. Все работает.

slon25 18.02.2015 18:47

Цитата:

Сообщение от murano (Сообщение 321052)
Для первоначальных тестов использовал именно такой. Все работает.

Спасибо. Еще вопрос!! У меня стоит сейчас магнитола сони. Ее я собираюсь оставлять в проете. Она будет работать как: усилитель , радио, громкая связь в ней есть. Посмотрел описание, в ней есть вход к этому пульту. Есть ли возможность использовать данный проводной пульт на два устройтва попеременно: магнитолу и нексус?? Переключение запрограмировать на одну из кнопок??

anton2204 18.02.2015 22:24

Цитата:

Сообщение от slon25 (Сообщение 321058)
Есть ли возможность использовать данный проводной пульт на два устройтва попеременно: магнитолу и нексус?? Переключение запрограмировать на одну из кнопок??

Здесь почитай/поспрашивай!

Berkut_IV 24.02.2015 00:47

Доброго времени всем. Подскажите С помощью какого адаптера можно соединить родные кнопки на руле(управление магнитолой) с планшетом регулировать звук переключать треки и все такое. Автомобиль BMW E39 2001 г. в. Планшет ZTE V9 Android 2.2.

wave_is 03.03.2015 01:26

А как в эту схему добавить управление релюшкой?
Хотелось бы чтобы данное устройство могло замыкать реле по команде с андроида.
Какие есть варианты подобной реализации?


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

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