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

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > Устройства ввода > Резистивные кнопки

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2016, 06:55   #1
Рус1
Старший Пользователь
 
Регистрация: 07.04.2015
Возраст: 44
Регион: 56
Сообщений: 114
Рус1 is a jewel in the roughРус1 is a jewel in the roughРус1 is a jewel in the rough
По умолчанию Скетч для двухпроводных кнопок руля

Прошу помощи.
Нужно подправить скетч . Рулевые кнопки двухпроводные.
Скетч сделан для входов А0 и А1 , сейчас А0 на плате не работает. Нужно подправить под А2 вход.
Плата Леонардо.


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

int analogPin=0; // пин для подключения кнопок A0
int analogPin1=1; // пин для подключения кнопок A1

int release_button = 931; // значение при отпущенных кнопках
int button_release_range = 20; // диапазон значения + - при отпущенных кнопках
int button_range = 5; // диапазон значения нажатых кнопок + -
int time_holding = 500; // время для удержания кнопок в миллисекундах
int time_tinkling = 10; // время исключающее дребезг контактов в миллисекундах
int vol_up = 91; // значение кнопки увеличить громкость
int vol_down = 242; // значение кнопки уменьшить громкость
int alt_tab = 0; // значение кнопки которая будет работать как Alt + Tab
int next = 0; // значение кнопки которая будет работать как Next при коротком нажатии и Fast Forward при удержании
int previous = 31; // значение кнопки которая будет работать как Previous при коротком нажатии и Rewind при удержании
int play_pause = 0; // значение кнопки которая будет работать как Play/Pause при коротком нажатии и Mute при удержании data1

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

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

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

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

if(data1>=release_button - button_release_range && data1<=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 >= 1500 && 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 && data1<=release_button + button_release_range && flag == 4)
{
Remote.previous();
flag = 0;
delay(10);
Remote.clear();
}

if(millis()-eventTime>time_holding && data1 >= 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 && data1 >= play_pause - button_range && data1 <= play_pause + button_range)
{
flag = 7;
}

if(data1>=release_button - button_release_range && data1<=release_button + button_release_range && flag == 7)
{
Remote.play_pause();
flag = 0;
delay(10);
Remote.clear();
}

if(millis()-eventTime>time_holding && data1 >= play_pause - button_range && data1 <= 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)

if(data1>=release_button - button_release_range && data1<=release_button + button_release_range && flag == 3 || data1>=release_button - button_release_range && data1<=release_button + button_release_range && flag == 5 || data1>=release_button - button_release_range && data1<=release_button + button_release_range && flag == 6)
{
flag = 0;
}
Рус1 вне форума   Ответить с цитированием
Старый 29.05.2016, 09:11   #2
ali_vlad
Старший Пользователь
 
Регистрация: 21.06.2014
Возраст: 47
Регион: 05
Машина: Hyundai Accent II
Сообщений: 556
ali_vlad is on a distinguished road
По умолчанию

PHP код:
int analogPin=2// пин для подключения кнопок A2 
Уважаемый, мой Вам совет: без элементарных знаний языка Вам будет очень трудно. Хоть немного почитайте теорию.
ali_vlad вне форума   Ответить с цитированием
Старый 29.05.2016, 09:45   #3
Рус1
Старший Пользователь
 
Регистрация: 07.04.2015
Возраст: 44
Регион: 56
Сообщений: 114
Рус1 is a jewel in the roughРус1 is a jewel in the roughРус1 is a jewel in the rough
По умолчанию

Цитата:
Сообщение от ali_vlad Посмотреть сообщение
PHP код:
int analogPin=2// пин для подключения кнопок A2 
Уважаемый, мой Вам совет: без элементарных знаний языка Вам будет очень трудно. Хоть немного почитайте теорию.
Делал как Вы говорите.
При таком раскладе не работает кнопка плай пауза , которая на втором проводе.
Монитор порта второй провод показывает чётко 1023 и при замыкании на землю -0.
Рус1 вне форума   Ответить с цитированием
Старый 29.05.2016, 09:51   #4
ali_vlad
Старший Пользователь
 
Регистрация: 21.06.2014
Возраст: 47
Регион: 05
Машина: Hyundai Accent II
Сообщений: 556
ali_vlad is on a distinguished road
По умолчанию

Как Вам сказать... Мне с моего дивана Вашей схемы не видно, может в ней ошибка. Может в подключении ошибка. Этот скетч, скорее всего, писался под определенные резистивные кнопки со своими сопротивлениями. Вы уверены, что у Вас такие же?
ali_vlad вне форума   Ответить с цитированием
Старый 29.05.2016, 09:57   #5
Рус1
Старший Пользователь
 
Регистрация: 07.04.2015
Возраст: 44
Регион: 56
Сообщений: 114
Рус1 is a jewel in the roughРус1 is a jewel in the roughРус1 is a jewel in the rough
По умолчанию

Подключение пока такое .
Комп лежит на столе . Из него выведены два провода упраления от ардуины. При замыкании одного провода на землю , в соответсвии с написанным скетчем включается следующий трек. С замыквнием второго провода , должна включится пауза , но никакой реакции не происходит.
Повторюсь монитор порта показывает адекватную работу обоих пинов. Дело в неправильном скетче , который я и прошу подкоректировать.
Рус1 вне форума   Ответить с цитированием
Старый 29.05.2016, 10:05   #6
Рус1
Старший Пользователь
 
Регистрация: 07.04.2015
Возраст: 44
Регион: 56
Сообщений: 114
Рус1 is a jewel in the roughРус1 is a jewel in the roughРус1 is a jewel in the rough
По умолчанию

Цитата:
Сообщение от ali_vlad Посмотреть сообщение
PHP код:
int analogPin=2// пин для подключения кнопок A2 
Уважаемый, мой Вам совет: без элементарных знаний языка Вам будет очень трудно. Хоть немного почитайте теорию.
Цитата:
Сообщение от ali_vlad Посмотреть сообщение
Как Вам сказать... Мне с моего дивана Вашей схемы не видно, может в ней ошибка. Может в подключении ошибка. Этот скетч, скорее всего, писался под определенные резистивные кнопки со своими сопротивлениями. Вы уверены, что у Вас такие же?
Этот скетч подкоректированный мной проработал в моём авто почти год.
Теперь пипа Х8 умерла и ей на смену пришёл мощный системник в который и была интегрирована ардуина , в которой в последствии и отказал аналог пин А0.
Рус1 вне форума   Ответить с цитированием
Старый 29.05.2016, 10:18   #7
ali_vlad
Старший Пользователь
 
Регистрация: 21.06.2014
Возраст: 47
Регион: 05
Машина: Hyundai Accent II
Сообщений: 556
ali_vlad is on a distinguished road
По умолчанию

PHP код:
int analogPin=1// пин для подключения кнопок A2 
int analogPin1=2// пин для подключения кнопок A1 
ali_vlad вне форума   Ответить с цитированием
Старый 29.05.2016, 17:50   #8
Рус1
Старший Пользователь
 
Регистрация: 07.04.2015
Возраст: 44
Регион: 56
Сообщений: 114
Рус1 is a jewel in the roughРус1 is a jewel in the roughРус1 is a jewel in the rough
По умолчанию

Не работает.
Рус1 вне форума   Ответить с цитированием
Старый 30.05.2016, 06:02   #9
Рус1
Старший Пользователь
 
Регистрация: 07.04.2015
Возраст: 44
Регион: 56
Сообщений: 114
Рус1 is a jewel in the roughРус1 is a jewel in the roughРус1 is a jewel in the rough
По умолчанию

В отпусках все ?
Рус1 вне форума   Ответить с цитированием
Старый 31.05.2016, 10:22   #10
Рус1
Старший Пользователь
 
Регистрация: 07.04.2015
Возраст: 44
Регион: 56
Сообщений: 114
Рус1 is a jewel in the roughРус1 is a jewel in the roughРус1 is a jewel in the rough
По умолчанию

Прошу знающих помоч.
Вопрос стоит очень остро.
Рус1 вне форума   Ответить с цитированием
Ответ


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

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

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



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


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