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

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   iCarDS (http://pccar.ru/forumdisplay.php?f=121)
-   -   iCarDS + Arduino = iCarDuino (http://pccar.ru/showthread.php?t=16718)

Bersenev 20.02.2012 19:33

Цитата:

Сообщение от badnetrnd (Сообщение 211736)
А к какому пину подключать что бы icards не считал кнопки руля энкодером ?

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

Единственное нельзя отправлять такие комбинации FF FF FF FF - это сообщает о том что дальше пойдут данные от температурных датчиков и EF FF FF FF - это код данных от акселерометра. Всё остальное плагин воспринимает как код клавиши.

badnetrnd 20.02.2012 20:23

Понял спасибо

Alex-NN 22.02.2012 14:33

Цитата:

Сообщение от Bersenev (Сообщение 211654)
Добавь ещё вот эти переменные в skin.ini

calibrate_x=418
calibrate_y=400
calibrate_z=568
calibrate_n=15
calibrate_a=48

Андрей, ты еще что-то правишь сейчас по поводу Ардуино? Что-то уперся я в стену после смены скетча на новый. Ждать исправлений или копать проблему у себя?
Не сохранился первый скетч?

Bersenev 22.02.2012 14:43

Цитата:

Сообщение от Alex-NN (Сообщение 212016)
Андрей, ты еще что-то правишь сейчас по поводу Ардуино? Что-то уперся я в стену после смены скетча на новый. Ждать исправлений или копать проблему у себя?

Да, точнее всё уже сделал, сейчас доделаю некоторые исправления в скине для телефона и выложу скин со всеми исправлениями для ардуино и телефона.

Кстати теперь на каждую кнопку ик пульта или энкодера можно назначить по две команды. Для этого надо будет одну кнопку пульта назначить кнопкой Shift и она будет переключать режим работы пульта. У меня теперь пульт вместо 11 команд можен 20 выполнить.

folv 23.02.2012 04:03

Я как понял для управления с рулевых кнопок нужно еще одно Arduino ставить?

Bersenev 23.02.2012 11:55

Цитата:

Сообщение от folv (Сообщение 212101)
Я как понял для управления с рулевых кнопок нужно еще одно Arduino ставить?

Нет, всё будет реализовано в одном ардуино. Как писал ранее я ещё точно не решил как буду бороться с дребезгом кнопок.

onv23 23.02.2012 13:03

Цитата:

Сообщение от Bersenev (Сообщение 212117)
Нет, всё будет реализовано в одном ардуино. Как писал ранее я ещё точно не решил как буду бороться с дребезгом кнопок.

А простейший способ почему не работает ? (по нажатию кнопки запоминать ее код, в этот момент читать таймер, если дельта по таймеру при следующем нажатии меньше антидребезгового окна (200-300 мсек), то, если код следующей нажатой равен предыдущему запомненному, ничего не делать, если не равен - перезаписать код последней нажатой и новый таймер)

admin 23.02.2012 14:10

Вот пример с фильтром дребезга
PHP код:

//http://compcar.ru      
#define PIN 5  //номер аналогового порта     
#define LIMIT 10 //предел погрешности при дребезге    

byte bytes[4];      
unsigned long math_time,old_time,real_timeres_dt1res_d;      
void setup()           
{          
Serial.begin(115200);           
}      

void loop()          
{        
  
res_d analogRead(PIN);   
  if( 
res_d LIMITres_d LIMIT;  
  
delay(10);    
  
res_dt1 analogRead(PIN);    
        
old_time millis();     
        
math_time 0;      
        while(
math_time 200)     
          {     
             
real_time millis();                  
             
math_time real_time old_time;    
            
res_dt1 analogRead(PIN);   
            if(
res_dt1 res_d-LIMIT || res_dt1 res_d+LIMIT) break;  
          }     
        
    if( 
math_time 70)   
      {    
      
bytes[0] = res_d  0xFF;          // преобразовать в 4-байта      
      
bytes[1] = (res_d  0xFF00) >> 8;      
      
bytes[2] = (res_d  0xFF0000) >> 16;     
      
bytes[3] = (res_d  0xFF000000) >> 24;     
      
Serial.writebytes,4); // отправить прочитаное значение компьютеру           
      
}        



Bersenev 23.02.2012 17:19

Цитата:

Сообщение от onv23 (Сообщение 212123)
А простейший способ почему не работает ? (по нажатию кнопки запоминать ее код, в этот момент читать таймер, если дельта по таймеру при следующем нажатии меньше антидребезгового окна (200-300 мсек), то, если код следующей нажатой равен предыдущему запомненному, ничего не делать, если не равен - перезаписать код последней нажатой и новый таймер)

Цитата:

Сообщение от admin (Сообщение 212133)
Вот пример с фильтром дребезга

К сожалению ни алгоритм onv23 ни код admin не решают проблему дребезга, в обоих вариантах считается что первое полученное значение и есть правильный код, а в дальнейшем проверяется уже дребезг относительно этого значения. Но в реальности первое значение тоже подвергнуто дребезгу.

Допустим есть кнопка, которая выдаёт значения от 100 до 120. В результате при первом считывании может быть получено значение от 100 до 120. Теоретически по коду admin-а мы получим в плагин до 20 кодов кнопки.

В реальности у меня данный код на одну и туже кнопку выдаёт 3-4 кода, допустим при первом нажатии 110, при следующем 112, а потом может и 108 и.д. , а должен всегда один, чего я и добиваюсь. Для конкретного варианта резистивных кнопок это не сложно, а вот один код на всё разнообразие вариантов требует времени.

admin 23.02.2012 18:12

Если рассматривать именно дребезг то тогда может быть проще поставить конденсатор на входе


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

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