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

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

fedor5800 16.11.2015 11:28

Цитата:

oledv или один аналоговый вход
Чтото ума не приложу как подключить его по аналоговому входу?

oledv 16.11.2015 11:50

Цитата:

Сообщение от fedor5800 (Сообщение 343591)
Чтото ума не приложу как подключить его по аналоговому входу?

также как и резистивные кнопки, у по сути 3 кнопки 3 состояния 3 входящих напряжения, только одна замкнута постоянно.
Постоянно опрашиваем порт, как только значение изменилось, сравниваем с предыдущим и определяем в какую сторону крутился энкодер.

fedor5800 16.11.2015 12:00

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

Maniac82 16.11.2015 12:33

Цитата:

Сообщение от fedor5800 (Сообщение 343596)
oledv спасибо, подскажите есть эмулятор подключения ардуины со всеми радио элементами. А то пока придёт посылка, потренируюсь на электронных схемах. Заранее спасибо

https://123d.circuits.io/
Единственный нормально работающий. Но он онлайн.

fedor5800 16.11.2015 13:01

Maniac82 Вот спасибо, щас как натренируюсь))

klimsky 16.11.2015 14:02

в схемотехнике познания близки к 0. подскажите, как решить проблему: arduino подключаю напрямую к ноутбуку, данные передаются: вижу кнопка нажата/кнопка удерживается/кнопка отпущена. но если подключаю ардуино в авто через usb-хаб, то вижу - при любом нажатии кнопок на руле вижу "кнопка нажата" - "кнопка удерживается". и всё. "отжатия" кнопки не происходит.
с чем может быть связано?

yuriy m 16.11.2015 18:21

Цитата:

Сообщение от klimsky (Сообщение 343615)
в схемотехнике познания близки к 0. подскажите, как решить проблему: arduino подключаю напрямую к ноутбуку, данные передаются: вижу кнопка нажата/кнопка удерживается/кнопка отпущена. но если подключаю ардуино в авто через usb-хаб, то вижу - при любом нажатии кнопок на руле вижу "кнопка нажата" - "кнопка удерживается". и всё. "отжатия" кнопки не происходит.
с чем может быть связано?

Наводит на мысль
1 usb кабель,
2 питание (хаба-(ардуино смотря как ацп включен),
3 подтягивающий резистор...

klimsky 16.11.2015 18:59

usb-кабель до ардуины - вроде ок, 30см, экранированный, шел с китай-ардуино
питание - по варианту 1 со схемы, 5в от NSD15-12S5. Хаб Dlink H-7 rev.A
https://timur.mobi/img/otg-chrg-nex7.jpg
сопротивление кнопок: Без нажатия 5.1 кОм;Влево 570 Ом;Вправо 316 Ом;Вверх 155 Ом;Вниз 63 Ом;Меню 1050 Ом. По совету с форума, подтягивающий резистор установлен 2кОм. Ардуино выдает значения: влево-811 вправо-897 вверх-957 вниз-997 меню-690

oledv 16.11.2015 23:33

klimsky, у вас в скетче ошибка

klimsky 17.11.2015 08:18

код из шапки темы на XDA
Код:

#include
const unsigned int DPin = 13;
const unsigned int APin = A0;

Button button = Button(DPin, HIGH);
unsigned int value = 0;
boolean holding = false;

void setup()
{
  Serial.begin(9600);
  button.setDebounceDelay(10);
  button.setHoldDelay(800);
}

void loop()
{
  button.listen();

  if (button.onPress()) {
    value = analogRead(APin);
    Serial.print(""); 
  }

  if(!holding && button.isHold()) {
    Serial.print("");
    holding = true; 
  }

  if(holding && button.onRelease()) {
    Serial.print("");
    holding = false;
  }
}

в итоге в авто в терминале вижу значениекнопки> значениекнопки> и всё

oledv 17.11.2015 08:35

klimsky зачем так сложно, посмотрите примеры в теме

klimsky 17.11.2015 08:59

что может быть проще приведенного кода? дело не в коде, 100%. при питании ардуино от ноутбука - всё ок, при питании от бортовой сети авто - описанная проблема

lti1 17.11.2015 09:04

klimsky, попробуйте так.

fedor5800 17.11.2015 15:58

Вложений: 1
Уважаемые знатоки, взял базовый скетч по управлению яркостью светодиода при помощи энкодера, но нашел только для 3х проводного, и попробовал его доработать для 4х проводного, а проверить не начем. Товарищ Maniac82
посоветовал онлайн конструктор https://123d.circuits.io/ но в нем нет энкодеров. :sad2:
У кого есть возможность проверить скетч на работоспособность?
код для светодиода потом выкину))

demtro 17.11.2015 19:08

Цитата:

Сообщение от lti1 (Сообщение 343547)

Работает как часики! Спасибо огромное в очередной раз)

nikopol70 17.11.2015 23:57

Цитата:

Сообщение от fedor5800 (Сообщение 343756)
Уважаемые знатоки, взял базовый скетч по управлению яркостью светодиода при помощи энкодера, но нашел только для 3х проводного, и попробовал его доработать для 4х проводного, а проверить не начем. Товарищ Maniac82
посоветовал онлайн конструктор https://123d.circuits.io/ но в нем нет энкодеров. :sad2:
У кого есть возможность проверить скетч на работоспособность?
код для светодиода потом выкину))

я так понимаю будет использовано как основа для регулировки громкости для планшета?

fedor5800 18.11.2015 00:03

nikopol70
Немного не так, планируют сделать вот так. Для прокрутки в списках.https://youtu.be/soPVu5nYc9E

fedor5800 24.11.2015 00:53

Вложений: 1
Приветствую Уважаемые форумчане в добавок к этому посту http://pccar.ru/showpost.php?p=343556&postcount=559
был разобран этот энкодер и нарисована (набросана) его схемка, а также заснял видео его работы. Кто поможет с набросками по написанию скетча?
https://youtu.be/AmYVuc1jfR4

Maniac82 24.11.2015 07:01

А кто знает почему когда запущен Navitel кнопки смены треков в poweramp со скетча не срабатывают? При это пауза и альт+таб продолжают работать!

fedor5800 26.11.2015 16:47

Цитата:

lti1, попробуйте так.
Я так понимаю этот скетч для назначения функций кнопок через эту прогу RemoteInputsMgr-1.3.2.apk прямо в андроиде?

Maniac82 26.11.2015 17:14

Цитата:

Сообщение от Maniac82 (Сообщение 344528)
А кто знает почему когда запущен Navitel кнопки смены треков в poweramp со скетча не срабатывают? При это пауза и альт+таб продолжают работать!

И перемотка этими же кнопками работает!

lti1 26.11.2015 19:18

Цитата:

Сообщение от fedor5800 (Сообщение 344785)
Я так понимаю этот скетч для назначения функций кнопок через эту прогу RemoteInputsMgr-1.3.2.apk прямо в андроиде?

Так и есть.

Влип 01.12.2015 22:53

Цитата:

Сообщение от lti1 (Сообщение 319975)
Соберу всю информацию по одному из решений в одном месте, у кого есть возможность закрепите ссылку в первом сообщении.
Работает только с 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);


Подключаете кнопки к 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()-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()-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()-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()-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()-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()-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. На удержание ни чего не назначен, можно добавить при необходимости.

Возможно ли переделать скетч так, чтоб на длительное нажатие следующего трека срабатывала плей/пауза, а на длительное нажатие предыдущего трека срабатывало муте? Походу тестирования еще выяснилась проблема, alt+tab работает хорошо, а вот увеличение/уменьшение звука и переключения треков, если нажимать с интервалом больше 1.5 сек то работают нормально, если нажимать чаще то путаются. подключено пока все к компьютеру, питание по usb. Номиналы: не нажатые 0, vol+ 1004, vol- 940, track+ 814, track- 725, alt+tab 624. Подтягивающий резистор от А0 к земле 12 кОм.

UPD: Вопрос про паузу и муте снимаю, нашел ответ. Заменил резистор на 4,7кОм разбег между значениями по монитору порта стал больше, теперь: не нажатые 0, vol+ 971, vol- 834, track+ 617, track- 500, alt+tab 389.Кнопки работают стабильнее, но все равно если часто нажимать кнопку иногда проскакивает нажатие другой.

anru 11.12.2015 13:21

Вопрос к гуру по ардуино с скетчем. Есть блок питания на микро про она и кнопки отрабатывает но появилось желание сделать кнопку муте. Можно допустим для начала реализовать муте на заднюю передачу. Входов у ардуинки еще много то есть приходит +12в на вход ардуинки через резистор конечно и срабатывает муте. Заранее спасибо.

oleg707 11.12.2015 18:01

Цитата:

Сообщение от anru (Сообщение 346014)
Вопрос к гуру по ардуино с скетчем. Есть блок питания на микро про она и кнопки отрабатывает но появилось желание сделать кнопку муте. Можно допустим для начала реализовать муте на заднюю передачу. Входов у ардуинки еще много то есть приходит +12в на вход ардуинки через резистор конечно и срабатывает муте. Заранее спасибо.

на вход не через резистор, а через делитель. :acute:

jurik097 19.12.2015 00:06

Если навител 9.6 то в нем есть косяк , сам недавно столкнулся , попробуйте навител 9.5

Alladim 31.12.2015 02:35

Цитата:

Сообщение от fedor5800 (Сообщение 343756)
Уважаемые знатоки, взял базовый скетч по управлению яркостью светодиода при помощи энкодера, но нашел только для 3х проводного, и попробовал его доработать для 4х проводного, а проверить не начем. Товарищ Maniac82
посоветовал онлайн конструктор https://123d.circuits.io/ но в нем нет энкодеров. :sad2:
У кого есть возможность проверить скетч на работоспособность?
код для светодиода потом выкину))

Не проходит компиляцию, выдает ошибку(A0.ino: In function 'void loop()':
A0:51: error: 'encoder_B_prev' was not declared in this scope
A0:73: error: expected `}' at end of input
) на строке
if((!encoder_B) && (encoder_B_prev)){ // если состояние изменилось с положительного к нулю

oleg707 31.12.2015 13:01

if((!encoder_B) && (encoder_B_prev)) // { если состояние изменилось с положительного к нулю
{}; // это по скетчу своему заполняй

Рус1 03.01.2016 18:50

Мужики , прокоментируйте плиз по ардуине.
pccar.ru/showthread.php?p=347535#post347535

demtro 19.01.2016 23:36

Вложений: 1
Народ, заливаю данный скетч в ардуину и кнопки как-будто залипают (нажал-кнопка сработала и ни одна другая не сработает пока ее же еще раз не нажмешь), а так же на кнопке DELETE ардуина зависает и не реагирует ни на что, помогает перезагрузка ее только, уже что только не пробовал, куда копать?

demtro 24.01.2016 22:49

Вложений: 1
Народ, помогите отследить кнопку контекстного меню с клавиатуры, которая обычно между кнопкой виндовс и правым контролом, считываю с клавы при помощи keyboardtest получаю значение (93), ввожу в ардуино, она потом отображается как "]", текстовое "KEY_MENU" ардуино не принимает при компиляции
И еще вопрос: как уменьшить скачек регулировки громкости на энкодере? в винде меняет с шагом 4 ед.

Alekssandr 25.01.2016 12:49

Я себе думаю ещё повторный энкодер приделать. Вот записал видео как будет работать, схема и прошивки под описанием. Может кого заинтересует.



как собрать здесь http://genmc.ru/index.php/avtomobili...der-na-arduino

oleg707 25.01.2016 13:19

Цитата:

Сообщение от Alekssandr (Сообщение 349692)
Я себе думаю ещё повторный энкодер приделать. Вот записал видео как будет работать, схема и прошивки под описанием. Может кого заинтересует.



как собрать здесь http://genmc.ru/index.php/avtomobili...der-na-arduino

близко к моим хотелкам, утяну, спасибо.:yes4:
Через хаб пробовал?
Вообще хотелось бы, чтобы треки переключало на планшете, а звук регулировался чем то типа
tda8425 , откуда звук спокойно идёт себе на усилок аппаратно.

Alekssandr 25.01.2016 13:56

Цитата:

Сообщение от oleg707 (Сообщение 349695)
близко к моим хотелкам, утяну, спасибо.:yes4:
Через хаб пробовал?

Пашет идеально)

anru 25.01.2016 22:34

Только хотел спросить тебя Alekssandr какой ник на этом сайте у тебя. Посмотрел видео и есть вопросы а можно к моему скетчу с рулевыми кнопками еще приделать энкодер на громкость и нажатие это будет mute.

Alekssandr 26.01.2016 09:37

Цитата:

Сообщение от anru (Сообщение 349750)
Только хотел спросить тебя Alekssandr какой ник на этом сайте у тебя. Посмотрел видео и есть вопросы а можно к моему скетчу с рулевыми кнопками еще приделать энкодер на громкость и нажатие это будет mute.

Легко)

max_64rus 30.01.2016 15:27

А ни кто не делал резистивнве кнопки не на ардуине а на мк каком нибудь attyni atmega pic просто есть в наличии разные мк а ардуины нет. Вроде тему прочитал всю но не увидел может пропустил ?

Alex EX 30.01.2016 16:20

Цитата:

Сообщение от max_64rus (Сообщение 350215)
А ни кто не делал резистивнве кнопки не на ардуине а на мк каком нибудь attyni atmega pic просто есть в наличии разные мк а ардуины нет. Вроде тему прочитал всю но не увидел может пропустил ?

Я повторял готовый проект для своих рулевых кнопок на АТМеге8. Вот тут посмотри http://pccar.ru/showthread.php?t=23711 Все работает на планшете как часики.

fedor5800 30.01.2016 22:06

Цитата:

Сообщение от max_64rus (Сообщение 350215)
А ни кто не делал резистивнве кнопки не на ардуине а на мк каком нибудь attyni atmega pic просто есть в наличии разные мк а ардуины нет. Вроде тему прочитал всю но не увидел может пропустил ?

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

max_64rus 31.01.2016 22:12

Цитата:

Сообщение от Alex EX (Сообщение 350222)
Я повторял готовый проект для своих рулевых кнопок на АТМеге8. Вот тут посмотри http://pccar.ru/showthread.php?t=23711 Все работает на планшете как часики.

Спасибо большое то что нужно прям и атмега8 как раз есть.


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

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