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

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

lti1 09.09.2015 19:21

Цитата:

Сообщение от maxymike (Сообщение 337709)
У меня chery tiggo fl, там стоит матрица из 6 резисторов от 0 до 2ком, на выход 2 провода. Они нормально опрашиваются сериал портом на стандартном скетче с дребезгом в 1-2 единицы.

Измерьте сопротивление на этих двух проводах при отпущенных кнопках.

maxymike 09.09.2015 20:30

Цитата:

Сообщение от lti1 (Сообщение 337724)
Измерьте сопротивление на этих двух проводах при отпущенных кнопках.

Прибора нет, но, что странно-значение покоя в сериалпорте (без нажатия кнопки)выше значений нажатия. В этом, наверное, все дело. Это как-нибудь программно,без перепайки резисторов, можно победить?

lti1 09.09.2015 21:27

Цитата:

Сообщение от maxymike (Сообщение 337729)
Прибора нет, но, что странно-значение покоя в сериалпорте (без нажатия кнопки)выше значений нажатия. В этом, наверное, все дело.

Так и есть.
Цитата:

Сообщение от maxymike (Сообщение 337729)
Это как-нибудь программно,без перепайки резисторов, можно победить?

Можно, заливайте этот скетч и выкладывайте полученные значения в состоянии покоя, минимальное и максимальное значение при нажатых кнопках.
PHP код:

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

void setup() 

Serial.begin(9600);


void loop() 

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



maxymike 09.09.2015 21:49

540 покой,24 меньший, 317 больший

lti1 09.09.2015 21:55

Цитата:

Сообщение от maxymike (Сообщение 337735)
540 покой,24 меньший, 317 больший

Пробуйте, специально для Chery Tiggo FL и arduino Nano V.7 https://duino.ru/arduino-nano-v7--ca...nano-duo-.html
PHP код:

int analogPin=A7;  
int data;  
int data1 0;  
int flag 0;  
unsigned long eventTime 0;  

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

void loop()  
{  
data=analogRead(analogPin);  

if(
data>=500 && data1 != && flag <= 1)  
 {  
  
Serial.print("<release:");  
  
Serial.print(data1);  
  
Serial.print(">");  
  
data1 0;  
  
flag 0;  
  
delay(10);  
 }  

if(
data>=500)  
 {  
 
eventTime millis();  
 }  

if(
data<=499 && flag != && millis()-eventTime>=50 && millis()-eventTime<=800)  
 {  
  
flag 2;  
  if(
millis()-eventTime <= 60data1 data;  
 }  

if(
data>=500 && flag == 2)  
 {  
  
Serial.print("<click:");  
  
Serial.print(data1);  
  
Serial.print(">");  
  
flag 0;  
  
delay(10);  
 }  

if(
data<=499 && flag == && millis()-eventTime>800)  
 {  
  
Serial.print("<hold:");  
  
Serial.print(data);   
  
Serial.print(">");  
  
data1 data;  
  
flag 1;  
  
delay(10);  
 }  



maxymike 10.09.2015 01:50

Алилуйя! Все заработало, огромное спасибо. Долгое нажатие отрабатывается хорошо, клики через раз, хотя в приложении все четко. Наверное,надо задержку под себя подстроить. Буду экспериментировать

lti1 10.09.2015 08:31

Цитата:

Сообщение от maxymike (Сообщение 337744)
Долгое нажатие отрабатывается хорошо, клики через раз, хотя в приложении все четко.

То есть?

ВладимирC 10.09.2015 12:02

Цитата:

Сообщение от lti1 (Сообщение 337752)
То есть?

Видимо как и у меня конденсатор стоит в кнопках, для устранения дребезга, Соответственно очень короткое нажатие искажает показания, увеличил интервалы для короткого и длинного нажатий работает почти идеально. По хорошему надо добраться до кнопок и найти этот зловредный кондер.

lti1 10.09.2015 12:33

Цитата:

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

В таком случае можно попробовать убрать программный антидребезг.

ВладимирC 10.09.2015 12:41

Цитата:

Сообщение от lti1 (Сообщение 337764)
В таком случае можно попробовать убрать программный антидребезг.

В смысле убрать задержку в 50мс? Если я правильно понял - то не поможет, мне наоборот пришлось увеличить ее, иначе при коротком нажатии выдается значение больше положенного.

maxymike 10.09.2015 14:11

У меня в приложении кнопки отзываются четко,дребезг +-1, так что руль в порядке. Но всплывающие сообщения в приложении при нажатии показывают в 80% не клик, а релиз. Холд показывает правильно. Буду пилить скетч.

ВладимирC 10.09.2015 15:11

+-1 - это не дребезг. Могу только предположить, что нажатия слишком короткие (меньше 50мс) и тогда скетч адекватно их воспринимает как релиз и не воспринимает как клик. Попробуйте либо чуть дольше удерживать кнопку при коротком нажатии, либо изменить 50 на меньшую величину if(data<=499 && flag != 1 && millis()-eventTime>=50 && millis()-eventTime<=800)

mr_nixon 10.09.2015 16:07

error

mr_nixon 10.09.2015 16:32

error

maxymike 12.09.2015 02:18

Так и не получилось победить этот сплошной релиз. Задержку прибавлял-убавлял. Убавил до 50 мс холд и смирился с 6-ю кнопками. Все четко

lti1 12.09.2015 23:16

Цитата:

Сообщение от maxymike (Сообщение 337938)
Так и не получилось победить этот сплошной релиз. Задержку прибавлял-убавлял. Убавил до 50 мс холд и смирился с 6-ю кнопками. Все четко

Вы что убавляли, это?
if(data<=499 && flag != 1 && millis()-eventTime>=50 && millis()-eventTime<=800)
{
flag = 2;
if(millis()-eventTime <= 60) data1 = data;
}

maxymike 14.09.2015 14:01

Да,тут

Maniac82 06.10.2015 09:40

Я что-то не совсем понял по какому принципу распознает данное приложение нажатия кнопок!
По появлению в Serial команд click, hold, release со значениями?

Maniac82 10.10.2015 15:04

Цитата:

Сообщение от murano (Сообщение 321209)
1. В ардуино отправляешь данные вида:
Serial.print(" Serial.print (tempa);
Serial.print("#");
Serial.print(tempb);
Serial.println(">");
Можно отправлять данные как у автора RemoteInputsMgr по отдельности, но так, как мне кажется, немного сложнее в их отлавливании таскером. Но в некоторых случаях только такой вариант реализации возможен, например, для передачи данных температуры и реализации резистивных кнопок чтобы отсеивать информацию с кнопок.
2. На планшете в RemoteInputsMgr выбираем USB соединение и устанавливаем скорость обмена как в ардуино.
3. В таскере создаем профиль-событие-система-Intent Received. В поле действие пишем org.kangaroo.rim.action.ACTION_DATA_RECEIVE. Идем назад на вопрос - выбираем или создаем новую задачу, например, arduino.
4. В задаче:
4.1 Нажимаем плюс-переменная-установить переменную:
Имя: %имя (любое имя)
До: %org_kangaroo_rim_device_extra_args
4.2 Плюс-переменная-расчленить переменную:
Имя: имя из п.4.1
Разделитель: разделитель из строки посылаемой ардуино. В нашем случае - #
4.3 Ecли данные из ардуино посылаем по отдельности, то в задаче нужно отслеживать переменную %org_kangaroo_rim_device_extra_command. Аналогично п.4.1 читаем ее. Например, переменной %Com присваиваем ее значение и сравниваем, например, с "tempa". Если %Com=tempa, то выполняем какие-то действия с данными %org_kangaroo_rim_device_extra_args.

Как писал ранее, пофиль будет отрабатывать при каждом приеме данных из ардуино.

5. Открываем Overlas-плюс-название профиля-add-виджет-zooper-виджет нужного размера-назад и нажать на имени созданного виджета, чтобы OFF поменялось на ON. Выходим из программы. На экране тапаем по виджету, открывается редактор. Создаем что нужно. В поле дополнительные параметры выбираем таскер и пишем #Txxx#, Ok. XXX - имя переменной. Выходим из редактора. В overlays отключаем виджет. При необходимости там же в настройках отключаем возможность реакции при нажатии на него.
6. В таскере в ранее созданной задаче.
Плюс-плагин-zooper-конфигурация(карандаш):
ZW переменная: переменная из редактора zooper (XXX)
ZW текст: имя из п.4.1 Если данные из ардуино посылаются все сразу, то к имени нужно дописать порядковый номер передаваемых данных (1,2,...). Их можно посмотреть во вкладке VARS.
Сохранить.
7. Создаем новую задачу, например Overlays on.
Плюс-плагин-overlays-конфигурация(карандаш)-созданный виджет-вкл.
8. Запускаем задачу Overlays on и в виджете должна отображаться информация.

Ничего понять не могу!
Пишу чисто для примера в порт:
serial.println("")
Через каждую секунду.
Программа сама отрбражает что пришло, но Таскер никак не хочет снимать значение в переменную! Хотя интент вроде принимает, так как список переменных мигает каждую секунду, но в значениях сами имена переменных!

TempRead (9)
A1: Установить перем. [ Имя:%Temp До:%org.kangaroo.rim.device.EXTRA_ARGS Вычислить матем. выраж.:Выключить Добавить:Выключить ]

Явно Где-то косячу наверное, но где?

murano 10.10.2015 16:32

Третий пункт сделал?

Maniac82 10.10.2015 16:46

Цитата:

Сообщение от murano (Сообщение 340068)
Третий пункт сделал?

Да конечно.
Внешний доступ тоже включил.
Профиль: Intent (8)
Событие: Intent Received [ Действие:org.kangaroo.rim.action.ACTION_DATA_RECEI VE Cat:None Cat:None Scheme:* Mime Type:* ]
Начальная: TempRead (9)
A1: Установить перем. [ Имя:%Temp До:%org.kangaroo.rim.device.EXTRA_ARGS Вычислить матем. выраж.:Выключить Добавить:Выключить ]

RabinoVich 10.10.2015 17:11

Автор Remote steering wheel control, похоже, тоже русскоговорящий, интересно здесь обитает он?

Maniac82 10.10.2015 19:45

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

Maniac82 10.10.2015 20:01

Причем самое интересное, что виджет из первого поста работает! То есть именно Таскер не видит переменные...
Отписался на xda как смог :) надеюсь поймет автор проги :)

lti1 11.10.2015 00:47

Вложений: 1
Maniac82, а таскер и профиль в нем включен?

Maniac82 11.10.2015 04:03

Цитата:

Сообщение от lti1 (Сообщение 340096)
Maniac82, а таскер и профиль в нем включен?

конечно.я же говорю саму обработку интента таскер видит.

Maniac82 11.10.2015 06:09

А экспортируйте кто-нибудь свой профиль в .xml с таскера в виде файла, и залейте сюда.
Попробую добавить

lti1 11.10.2015 09:11

Вложений: 1
Цитата:

Сообщение от Maniac82 (Сообщение 340099)
А экспортируйте кто-нибудь свой профиль в .xml с таскера в виде файла, и залейте сюда.
Попробую добавить

Опробуйте.

Maniac82 11.10.2015 11:03

Спасибо! Работает! И сразу ясно стало в чем отличие!
У меня переменная через точки, а тут через подчеркивание!
Довольно странно, ведь сам автор через точки пишет!
А в примере если приглядеться тоже через полчеркивание!

Maniac82 11.10.2015 16:56

А как можно наоборот - данные в Arduino передавать?? При USB-подключении?

Вроде прога поддерживает, только сообразить не могу пока - не сталкивался с этим еще..
Код:

added support recive data from external apps for sending to device
action: org.kangaroo.rim.action.ACTION_DATA_SEND
exrta: org.kangaroo.rim.device.EXTRA_COMMAND, org.kangaroo.rim.device.EXTRA_ARGS
data format that will be sent to device ""


Maniac82 14.10.2015 21:20

Пока не могу осилить отправку команд на ардуино хоть через чего-нибудь. Может кто поможет? Ардуиной научился распознавать команды вида <команда:аргумент> функцией sscanf, отправленной в сериалпорт.
То есть если на компе в порт пишу <13:on> то команда распознается, обрабатывается, зажигается диод встроенный.

Помогите отправить подобную команду <13:on> с помощью вышеуказанного интента проги Remote inputs manager. Либо другим способом.
Наверняка же уже кто-то разобрался?
Я, пытаюсь создавать интент этот, но в порт вообще ничего не отправляется.

yuriy m 31.10.2015 16:35

Плохо ,что сама программа слишком медленно производит опрос ардуино, примерно раз в пол секунды. И слишком короткие данные не с первого раза обрабатываются...

lti1 31.10.2015 16:45

Цитата:

Сообщение от yuriy m (Сообщение 342120)
Плохо ,что сама программа слишком медленно производит опрос ардуино, примерно раз в пол секунды. И слишком короткие данные не с первого раза обрабатываются...

Вы о чем? Программа отрабатывает короткие нажатия мгновенно, а удержание как установленной в скетче.

yuriy m 31.10.2015 18:02

Цитата:

Сообщение от lti1 (Сообщение 342121)
Вы о чем? Программа отрабатывает короткие нажатия мгновенно, а удержание как установленной в скетче.

Ну не знаю. У меня кнопка отрабатывается примерно за 0,4 - 0,5 сек ... То есть если кнопка нажата меньше этого времени ,то может и не удивить.Хотя данные по монитору приходят пару десятков раз в секунду. Но если я подключаю просто как usb hid key ,отрабатывает мгновенно.

lti1 31.10.2015 18:25

Цитата:

Сообщение от yuriy m (Сообщение 342133)
Ну не знаю. У меня кнопка отрабатывается примерно за 0,4 - 0,5 сек ... То есть если кнопка нажата меньше этого времени ,то может и не удивить.Хотя данные по монитору приходят пару десятков раз в секунду. Но если я подключаю просто как usb hid key ,отрабатывает мгновенно.

Какой скетч используете?

yuriy m 01.11.2015 01:33

Цитата:

Сообщение от lti1 (Сообщение 342135)
Какой скетч используете?

Аля сборная солянка... Я сам пишу скетчи под ардуино,хотя больше предпочитаю писать на чистом си для авр,арм контроллеров. И дело здесь не в скетче. Так как голый скетч,который здесь залит в примере ,программа ведет себя так же. яж писал ,ардуино отправляет в порт данные около трех десятков раз в секунду. Но судя что я вижу, программа опрашивает или обрабатывает (исходников нету по этому не знаку как работает) примерно пару раз в секунду... Соответственно на команды малой длительности она не всегда успевает отрабатывать,она их просто не видит, что для меня не есть хорошо...
P.S. У вас какое минимальное по времени касание отрабатывает ?

lti1 01.11.2015 10:33

Цитата:

Сообщение от yuriy m (Сообщение 342168)
P.S. У вас какое минимальное по времени касание отрабатывает ?

Этот тестовый скетч у меня прибавляет, а потом убавляет громкость на 10 делений в секунду, то есть минимальное касание 0,1 секунды, меньше не пробовал.
PHP код:

void setup()
{
  
Serial.begin(115200);
}
void loop()
{
delay(5000);
for (
int i=0<= 10i++){
  
Serial.print("<click:50>");
  
delay(100);
   }
delay(2000);
for (
int i=0<= 10i++){
  
Serial.print("<click:60>");
  
delay(100);
   }



yuriy m 02.11.2015 15:40

Время немного появилось и нашлось. Датчик температуры тупил... И все равно хоть сейчас и довольно таки быстро,но есть ощущение ,что программа проверяет раз "надцать"посылку в порт и только потом выполняет... Исходничик бы посмотреть...
Единственный момент,который для меня не совсем понятно ,почему программа вылетает с ошибкой ,когда прокручиваю список приложений для запуска,примерно где то в середине списка.

yuriy m 02.11.2015 21:07

Цитата:

Сообщение от Maniac82 (Сообщение 340124)
А как можно наоборот - данные в Arduino передавать?? При USB-подключении?

Вроде прога поддерживает, только сообразить не могу пока - не сталкивался с этим еще..
Код:

added support recive data from external apps for sending to device
action: org.kangaroo.rim.action.ACTION_DATA_SEND
exrta: org.kangaroo.rim.device.EXTRA_COMMAND, org.kangaroo.rim.device.EXTRA_ARGS
data format that will be sent to device ""


+1 тоже интересует. Пока сам не разбирался времени не хватает ,может кто пробовал ?

Rayne11 06.11.2015 15:52

Кто в теме, подскажите, такая проблемка.
кЕтай Ардуино Уно + Bluetooth-модуль HC-06 + RemoteInputsMgr 1.3.2 + виджеты из шапки - все работает, температура с двух датчиков отображается. Хочу убрать Bluetooth-модуль, и подключить ардуино к планшету по usb. Убираю, подключаю, ничего не работает (в RemoteInputsMgr ставлю подключение по usb). Показатели с датчиков не идут. Как настроить? В чем проблема?
p.s. в ардуино полный нуб, если можно подробно с решением


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

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