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мс? Если я правильно понял - то не поможет, мне наоборот пришлось увеличить ее, иначе при коротком нажатии выдается значение больше положенного.


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

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