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

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

mihrun79 31.03.2017 13:57

Цитата:

Сообщение от blogsylar (Сообщение 385151)
Два источника лучше ставить на 2 разных канала А0 и А1 и немного править в скетче. Сам сажал 2 источника на А0 и в итоге такая каша.

Второй канал: 5в брать оттуда же,и подтяжку на А1 добавлять?

mihrun79 31.03.2017 14:01

Цитата:

Сообщение от lti1 (Сообщение 277286)
Начало здесь.
Nett, в папке \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 на те, что во вложении соответственно. И добавляете в код из поста murano нужные действия, не нужные удаляете
Код:

int analogPin=0;
int data;

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

void loop()
{
  data=analogRead(analogPin); //читаем значение нажатой кнопки
  Serial.println(data); //для определения кодов нажатых кнопок на мониторе порта
  /*поддерживаемые коды управляющих клавиш
  http://arduino.cc/en/Reference/KeyboardModifiers*/
  if (data==614)  Keyboard.write(176); //ENTER
  if (data==122)  Keyboard.write(216); //стрелка влево
  if (data==165)  Keyboard.write(215); //стрелка вправо
  if (data==216)  Keyboard.write(218); //стрелка вверх
  if (data==276)  Keyboard.write(217); //стрелка вниз
if (data>=315 && data<=345)  // приглушение звука
    {
      Remote.mute();
      Remote.clear();
    }
  if (data>=420 && data<=460)  // воспроизведение / пауза
    {
      Remote.play_pause();
      Remote.clear();
    }

  delay(100);
}

И как писал murano, добавить диапазон значения +- 5%, напимер если значение клавиши 330 вместо data==330 использовать data>=315 && data<=345 и т.д.
Возможные варианты мультимедиа клавиш
Код:

// Volume
Remote.increase();        Volume Up
Remote.decrease();        Volume Down
Remote.mute();                Mute
 
// Playback
Remote.play();                Play
Remote.pause();                Pause
Remote.play_pause();        Play/Pause
Remote.stop();                Stop
 
// Track Controls
Remote.next();                Next
Remote.previous();        Previous
Remote.forward();        Fast Forward
Remote.rewind();        Rewind

Remote.power();                Power
Remote.home();                WWW Home
Remote.search();        WWW Search

Кстати, какая у Вас плата? Должна быть Arduino Leonardo или Arduino Pro Micro.
Исходник здесь, Stop заменен на Play/Pause

Alt/tab и кнопки планшета не могу реализовать ?Есть решения к этому скетчу?

blogsylar 18.04.2017 12:18

Всем привет! Суть такова. Ардуино подключено к кнопкам, но не резистивно, по двум проводам, а с каждой кнопки идет по два провода и подключается каждая к своему порту. В файлике vendor.kl прописаны все действия, типа home, back, next, volume_up, и тд., эти команды отрабатывает на ура. Так же прописаны горячие клавиши, типа ctrl+1. ctrl+2... итд. Вопрос вот в чем. В 4-м андройде была панель быстрых клавиш, или типа того, quick launch, что ли, и в ней можно было назначать целые приложения на комбинации кнопок. В 6-м андройде это вырезали. Есть ли способ интерпретировать это сочетание в запуск приложения? Может через таскер? Андройд само нажатие видит, но не знаю как назначить на него запуск приложения

maxymike 20.04.2017 17:19

Не могу подружить про микро и bluetooth hc 05,hc 06. Питание давал и 3,3 и 5 вольт. RX и TX местами менял-бесполезно. Блютус виден,подключается,но данные не сыпет. По usb все хорошо. HC 05-06 работают с UNO отлично. В чем может быть собака?

ВладимирC 20.04.2017 17:29

Цитата:

Сообщение от maxymike (Сообщение 386250)
Не могу подружить про микро и bluetooth hc 05,hc 06. Питание давал и 3,3 и 5 вольт. RX и TX местами менял-бесполезно. Блютус виден,подключается,но данные не сыпет. По usb все хорошо. HC 05-06 работают с UNO отлично. В чем может быть собака?

3.3В не питание нужно, а логические уровни, делители попробуйте поставить на TX RX.

Alladim 30.04.2017 01:49

Всех приветствую! Нужна Ваша помощь!
Недавно раздобыл себе вот такую панель управления от финика.
https://mail.google.com/mail/u/0/?ui...&sz=w1280-h845

Давняя мечта что то подобное заточить под управление планшетом.
С кнопками разобрался, там матрица 5*5=25 кнопок (26-я аварийка выведена отдельно)
Использую Arduino pro micro. Подключил, залил для теста простенький скетч- на мониторе отзываются все кнопки без проблем. Вот скетч:

Код HTML:

#include <Keypad.h> // подключаем нашу библиотеку
const byte ROWS = 5; //число строк у нашей клавиатуры
const byte COLS = 5; //число столбцов у нашей клавиатуры
char hexaKeys[ROWS][COLS] = {
{'1','2','3','4','5'}, // здесь мы располагаем названия наших клавиш, как на клавиатуре,для удобства пользования
{'6','7','8','9','0'},
{'A','B','C','D','E'},
{'F','G','H','I','J'},
{'K','L','M','N','O'}
};
byte rowPins[ROWS] = {2, 3, 4, 5, 6}; //к каким выводам подключаем управление строками
byte colPins[COLS] = {7, 8, 9, 10, 16}; //к каким выводам подключаем управление столбцами
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup(){
Serial.begin(9600);
}
void loop(){
char customKey = customKeypad.getKey();
if (customKey){
Serial.println(customKey);
}
}

Собственно вопрос: как мне реализовать управление по подобию поста Ув. lti1
http://pccar.ru/showpost.php?p=319975&postcount=307
С учетом того что клавиатура не резистивная? В програмировании мягко говоря не очень. Поэтому не могу пока понять как считать нажатие моей клавиатуры и присвоить ей действие, которое будет отправлено в планшет.

Еще как вариант, будут ли работать приложения такие как "Remote steering wheel control" или "SerialManager" с матричной клавиатурой?

Помогите пожалуйста реализовать мечту идиота)
Буду очень благодарен за помощь!

wanix 04.05.2017 09:51

Народ, направьте в правильное русло. Есть кнопки на руле резистивные, есть sony MEX-DV1600U у него есть вход для пульта судя по всему такого : https://www.drive2.ru/l/288230376152759568/ так вот у меня возникло желание впендюрить ему родные кнопки руля чтобы он их кушал.
Я это понимаю как: берем ардуину по выше указанным методам читаем кнопки, понимаем кто есть кто, а потом как это скормить соньке ?

blogsylar 04.05.2017 11:23

Цитата:

Сообщение от wanix (Сообщение 387160)
Народ, направьте в правильное русло. Есть кнопки на руле резистивные, есть sony MEX-DV1600U у него есть вход для пульта судя по всему такого : https://www.drive2.ru/l/288230376152759568/ так вот у меня возникло желание впендюрить ему родные кнопки руля чтобы он их кушал.
Я это понимаю как: берем ардуину по выше указанным методам читаем кнопки, понимаем кто есть кто, а потом как это скормить соньке ?

Нужен цифровой потенциометр. А в общем - так

wanix 04.05.2017 13:26

Цитата:

Сообщение от blogsylar (Сообщение 387169)
Нужен цифровой потенциометр. А в общем - так

спасибо

Alladim 06.05.2017 02:02

В общих чертах накидал с горем пополам вот такой скетч
Код HTML:

#include <Keypad.h> // подключаем нашу библиотеку

const byte ROWS = 5; //число строк у нашей клавиатуры

const byte COLS = 5; //число столбцов у нашей клавиатуры

char hexaKeys[ROWS][COLS] = {

{'1','2','3','4','5'}, // здесь мы располагаем названия наших клавиш, как на клавиатуре,для удобства пользования

{'6','7','8','9','0'},

{'A','B','C','D','E'},

{'F','G','H','I','J'},

{'K','L','M','N','O'}



};

byte rowPins[ROWS] = {2, 3, 4, 5, 6}; //к каким выводам подключаем управление строками

byte colPins[COLS] = {7, 10, 16, 14, 15}; //к каким выводам подключаем управление столбцами

//initialize an instance of class NewKeypad

Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void setup()
{
  PCICR=1<   PCMSK0=(1<   pinMode (8,INPUT_PULLUP);
  pinMode (9,INPUT_PULLUP);

  Keyboard.begin();
  Serial.begin(9600);
}
// настройка функциональных клавиш
void loop(){
  char customKey = customKeypad.getKey();



// назначение действий на кнопки


if (customKey == 'B') {
 
Keyboard.press(KEY_UP_ARROW);
delay (100);
Keyboard.releaseAll();
}
if (customKey == '2') {
 
Keyboard.press(KEY_DOWN_ARROW);
delay (100);
Keyboard.releaseAll();


}
if (customKey == 'O') {
 
Remote.previous();
delay (100);
Remote.clear();


}if (customKey == '7') {
 
Remote.next();
delay (100);
Remote.clear();

}if (customKey == '4') {
 
Remote.play_pause();
delay (100);
Remote.clear();

}if (customKey == '5') {
 
Remote.mute();
delay (100);
Remote.clear();

}if (customKey == '9') {
 
Keyboard.press(KEY_RETURN);
delay (100);
Keyboard.releaseAll();
 

Serial.println(customKey);
}

}


// часть кода для регулировки громкости энкодером 

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



Все кнопки работают, энкодер работает, нажатия на кнопки назначать получается. Но ! очень хочется реализовать управление с коротким/ длинным нажатием как в скетче Ув. lti1
http://pccar.ru/showpost.php?p=319975&postcount=307.
Ну ни как я не могу въехать, как переделать строки
Код HTML:

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

под матричную клавиатуру, в которой нету дребезга, не надо ничего сравнивать.
Очень прошу, на примере одной команды перемотки вперед, подскажите что нужно добавить в мой скетч, в том числе над циклом loop.


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

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