Страница 7 из 55 ПерваяПервая 1234567891011121317 ... ПоследняяПоследняя
Показано с 61 по 70 из 561

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Местный Аватар для Hmelik
    Регистрация
    23.07.2009
    Возраст
    45
    Сообщений
    116
    Вес репутации
    226

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    попробую, а то совсем не вдохновляет из резисторных кнопок матрицу ваять
    Мazda 6 2.0 АТ 2006
    Победитель конкурса "CarPC 2009" 2 место

  2. #2
    Новичок
    Регистрация
    21.08.2009
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    Подскажите, как все-таки поставить границы сопротивлений…
    Прочёл всю ветку, перепробовал все возможные варианты, а программа всё равно выдает ошибку, работает только с одним значением, т.е. например с таким: <755>Key1=175 />
    Ошибку выдаёт если ставить:
    <-755->Key1=175 />
    750<-755->760Key1=175 />
    <750-760>Key1=175 />

    Ещё я не понял для чего в config.txt нужна строка: Limit= 5 units и зачем в программе HKey_config.exe внизу выставлять значения… убедился лишь в том, что изменение этих значений к желаемому результату не приводит =(

    Ну и на последок, когда будет реализована функция короткого нажатия, нажатия с удержанием и как вариант двойного быстрого нажатия!?...

  3. #3
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,381
    Вес репутации
    10

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    Limit= 5 units это и есть допуск сопротивлений (+5)(-5), можно менять из программы config
    Последний раз редактировалось Chip; 31.01.2010 в 13:35.

  4. #4
    Местный Аватар для Hmelik
    Регистрация
    23.07.2009
    Возраст
    45
    Сообщений
    116
    Вес репутации
    226

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    я в итоге решил переделать на кнопки с резисторных на матричные.
    Не удалось достичь успеха. Пробовал менять время в прошивке.
    Добился что получаю двойное нажатие, с стандартным параметром тоже устойчивость не радует, или нажмёт 1 раз и быстро, или не нажмёт ваще, или выдаст двойное нажатие(т.к. если не сработало продолжаю держать)
    Мazda 6 2.0 АТ 2006
    Победитель конкурса "CarPC 2009" 2 место

  5. #5
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,381
    Вес репутации
    10

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    Попробую подправлю прошивку , первое нажатие длинная пауза и если есть удержание то будут повторы короткие. В ИК пульте так реализовал

  6. #6
    Пользователь
    Регистрация
    20.02.2009
    Возраст
    51
    Сообщений
    44
    Вес репутации
    213

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    Цитата Сообщение от Hmelik Посмотреть сообщение
    я в итоге решил переделать на кнопки с резисторных на матричные.
    Не удалось достичь успеха. Пробовал менять время в прошивке.
    Добился что получаю двойное нажатие, с стандартным параметром тоже устойчивость не радует, или нажмёт 1 раз и быстро, или не нажмёт ваще, или выдаст двойное нажатие(т.к. если не сработало продолжаю держать)
    Добавлю свои 5 копеек. Такие же проблемы были, сколько не изгалялся с подбором времени задержки "дребезга" - не удалось добиться полность 100% реакции, как в штатной магнитоле.
    В итоге перенес логику определения какая кнопка нажата полностью в ардуину, т.е. на выходе она выдает в компорт код нажатой кнопки, а не значение из АЦП. Получилось громоздко, зато теперь никаких двойных нажатий или проглатывания нажатой кнопки нет.


    PHP код:

    // Для рулевых кнопок
    // Задержки между нажатиями конкретных кнопок, миллисекунды
    #define KEY_CH_MINUS_DELAY    (200)
    #define KEY_CH_PLUS_DELAY     (200)
    #define KEY_VOL_MINUS_DELAY   (150)
    #define KEY_VOL_PLUS_DELAY    (150)
    #define KEY_MODE_DELAY        (300)

    // Значения кнопок
    #define KEY_CH_MINUS    (445)
    #define KEY_CH_PLUS     (640)
    #define KEY_VOL_MINUS   (90)
    #define KEY_VOL_PLUS    (270)
    #define KEY_MODE        (805)

    // Погрешность при чтении кнопок
    #define KEY_DELTA       (30)

    // Коды кнопок, что отсылаем в порт внешней проге
    #define CH_MINUS    (1)
    #define CH_PLUS     (2)
    #define VOL_MINUS   (3)
    #define VOL_PLUS    (4)
    #define MODE        (5)
    #define NONE        (0)


    unsigned long LastTimeKeyPressed millis();
    int LastKeyPressed NONE;

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

    void loop()      
    {   
      
    ReadSteering();
      
    delay(50);


    // Читает рулевые кнопки и пишет в порт код нажатой кнопки
    void ReadSteering()      
    {   
      
    unsigned long TimeKeyPressed;
      
    int KeyPressed NONE;
      
    int dt1 analogRead(0);
      
    delay(50); 
      
    int dt2 analogRead(0);
      if (
    abs(dt1-dt2)<=and dt1<900 //если нет дребезга и что-то есть
      

        
    // Регистрируем время нажатия кнопки
        
    TimeKeyPressed millis();

        
    //CH_MINUS    
        
    if ( (dt1-KEY_DELTA <= KEY_CH_MINUS) and (dt1+KEY_DELTA >= KEY_CH_MINUS) )
        {
          if ( (
    LastKeyPressed != CH_MINUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_MINUS_DELAY) )
          {
            
    LastKeyPressed CH_MINUS;
            
    KeyPressed CH_MINUS;
            
    LastTimeKeyPressed TimeKeyPressed;
          }  
        }
        
    //CH_PLUS
        
    else if ( (dt1-KEY_DELTA <= KEY_CH_PLUS) and (dt1+KEY_DELTA >=KEY_CH_PLUS) )
        {
          if ( (
    LastKeyPressed != CH_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PLUS_DELAY) )
          {
            
    LastKeyPressed CH_PLUS;
            
    KeyPressed CH_PLUS;
            
    LastTimeKeyPressed TimeKeyPressed;
          }  
        }
        
    //VOL_MINUS
        
    else if ( (dt1-KEY_DELTA <= KEY_VOL_MINUS) and (dt1+KEY_DELTA >=KEY_VOL_MINUS) )
        {
          if ( (
    LastKeyPressed != VOL_MINUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_VOL_MINUS_DELAY) )
          {
            
    LastKeyPressed VOL_MINUS;
            
    KeyPressed VOL_MINUS;
            
    LastTimeKeyPressed TimeKeyPressed;
          }  
        }
        
    //VOL_PLUS
        
    else if ( (dt1-KEY_DELTA <= KEY_VOL_PLUS) and (dt1+KEY_DELTA >=KEY_VOL_PLUS) )
        {
          if ( (
    LastKeyPressed != VOL_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_VOL_PLUS_DELAY) )
          {
            
    LastKeyPressed VOL_PLUS;
            
    KeyPressed VOL_PLUS;
            
    LastTimeKeyPressed TimeKeyPressed;
          }
        }
        
    //MODE
        
    else if ( (dt1-KEY_DELTA <= KEY_MODE) and (dt1+KEY_DELTA >=KEY_MODE) )
        {
          if ( (
    LastKeyPressed != MODE) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_MODE_DELAY) )
          {
            
    LastKeyPressed MODE;
            
    KeyPressed MODE;
            
    LastTimeKeyPressed TimeKeyPressed;
          }  
        }
        
        if (
    KeyPressed != NONE)
        {
          
    Serial.print(char(255));
          
    Serial.print(KeyPressed,DEC);
        }  

        
    //Serial.print(dt1,DEC);
        //Serial.print("   ");
        //Serial.println(dt2,DEC);
      
    }   

    Последний раз редактировалось Hamster; 15.03.2010 в 01:33.

  7. #7
    Продвинутый
    Регистрация
    01.06.2008
    Возраст
    48
    Сообщений
    204
    Вес репутации
    251

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    гм, а это работает все через usb?
    вот думаю может это все сделать на простейшем контроллере пик 8 ногом и отправлять через какой нить PL-микрухе в usb? хотя у меня кнопок на руле нет, мож джостик от соньки прибабахать...

  8. #8
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,381
    Вес репутации
    10

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    Реализовано, но пока не до конца.

  9. #9
    Новичок
    Регистрация
    12.03.2010
    Возраст
    54
    Сообщений
    5
    Вес репутации
    191

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    Подскажите как можно подключить штатные кнопки на три контакта +12 GND и сигнал

  10. #10
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,381
    Вес репутации
    10

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    А зачем +12в

Страница 7 из 55 ПерваяПервая 1234567891011121317 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •