Страница 45 из 57 ПерваяПервая ... 353940414243444546474849505155 ... ПоследняяПоследняя
Показано с 441 по 450 из 561
  1. #441
    Пользователь Аватар для Jusper
    Регистрация
    04.10.2010
    Возраст
    37
    Сообщений
    71
    Вес репутации
    182

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

    Chip дома он мне нормально показывал из за этого кода
    PHP код:
    Serial.print(dt1,DEC);
        
    Serial.print("   ");
        
    Serial.println(dt2,DEC); 
    А в машине почему то нет, так я прошлый раз считывал значение кнопок, так сказать шлет коды нажатых кнопок в порт.
    Разве я не прав?
    Последний раз редактировалось Jusper; 23.11.2012 в 04:30.

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

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

    В предыдущем сообщении ничего о коде небыло сказано

  3. #443
    Пользователь Аватар для Jusper
    Регистрация
    04.10.2010
    Возраст
    37
    Сообщений
    71
    Вес репутации
    182

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

    В скече он есть, только отключён.
    Сначала включаешь его считываешь кнопки а потом можно опять отключить или удалить.

  4. #444
    Пользователь Аватар для Jusper
    Регистрация
    04.10.2010
    Возраст
    37
    Сообщений
    71
    Вес репутации
    182

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

    После танцов с бубеном вернул прежнее сопротивление на 4.65 кило ом и пару кнопок заработало но не по назначению это в том случии если я не нахожусь в центре фуге а на главном экране (дестопе), в самой центре фуге не реагирует на кнопки.
    Но не как не могу считать значения кнопок руля все ровно какие то каракули, может я в скрипте ошибся или что то не правильно делаю?

  5. #445
    Пользователь Аватар для Jusper
    Регистрация
    04.10.2010
    Возраст
    37
    Сообщений
    71
    Вес репутации
    182

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

    Решил сделать свой вклад с полным пособием Chip надеюсь ты одобришь.
    Это для тех кто хочет сделать не вникая (сделал и забыл)

    Для тех кто хочет что бы у него работали кнопки и к тому же можно было настроить часы как это у меня (Хонда Цивик + переходник для магнитолы что бы работал климат контроль).


    Шах 1
    Берем те 2 провода которые идут от кнопок руля не отсоединяем их от переходника, подключаем к ним параллельно 2 провода которые идут на ардуино по схеме.
    А для тех у кого этого нет и не нужно просто 2 провода с кнопок руля по схеме с первой страницы.



    место сопротивления 3.3 Ком как было на схеме первой страницы ставим переменный резистор (я свой выпаял с какого то блока сопротивление на тестере было от 0.12 до 84 Ком) нам не нужно большое сопротивление это будет зависеть от длины проводов к ардуино (у меня комп в багажнике).

    Шах 2
    Скачиваем программатор с офф сайта http://www.arduino.cc/en/Main/Software
    распаковываем не важно куда.

    Шаг 3
    Подключаем Ардуино к компу и устанавливаем драйверы найти их можно тут http://www.google.ru/search?q=CDM+2.06.00+WHQL+Certified&ie=utf-8&oe=utf-8&aq=t&lr=lang_ru&rls={moz:distributionID}:{moz:lo cale}:{mozfficial}

    Так же можно проверить если все драйвера установились успешно зайдя в диспетчер устройств.

    Шаг 4
    Желательно освободить все порты, отключить все не нужные вещи на время.
    Открываем скачавшийся программатор ардуино и подключим его к нашему ардуино.
    1. Нажимаем на Tools-->Board и выберем вашу модель ардуино.
    2. Нажимаем на Tools-->Serial Port и выберем порт к которому подключён ардуино.
    Можно узнать в диспетчере устройств-->Порты (Com LPT) нажать на плюс и там уведите ваше устройство а возле него написан на каком порте он подключён.

    Шаг 5
    Заливаем скетч тут у каждого разный работает может из за того что не все шаги были описаны понятно.
    Я воспользуюсь скетчем от HAMSTERa

    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    (175)
    #define KEY_CH_PLUS     (330)
    #define KEY_VOL_MINUS   (0)
    #define KEY_VOL_PLUS    (73)
    #define KEY_MODE        (530)

    // Погрешность при чтении кнопок
    #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(9600);
    }      

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


    // Читает рулевые кнопки и пишет в порт код нажатой кнопки
    void ReadSteering()      
    {   
      
    unsigned long TimeKeyPressed;
      
    int KeyPressed NONE;
      
    int dt1 analogRead(5);
      
    delay(50); 
      
    int dt2 analogRead(5);
      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);
      }   

    Только нужно его изменить под вас а конкретно( на каком порте подключён ардуино, какая скорость) часто не обращают на это внимание а потом возникают ошибки (я лично из за того что не заметил что не тот порт написан бился об стенку пол часа)

    PHP код:
    Serial.begin(9600
    вместо 9600 впишите свою скорость порта узнать можно все там же в диспетчере устройств нажимает правой мишкой по вашему устройству-->Свойства-->Параметры порта-->Скорость, так же ее можно изменить на ту которая вам нужна.

    PHP код:
    int dt1 analogRead(5);
    int dt2 analogRead(5); 
    Изменить вместо 5 поставить свой порт к которому подключён ардуино.

    можно проверить на ошибки нажав на иконку ВИ (Компиляция)
    Внизу напишет что все успешно прошло, если будут ошибки то он их напишет там же.

    Шаг 6
    Закачиваем скеч который мы отредактировали под себя нажатием кнопок на клавиатуре CTRL+U или же нажимаем на рисунок стрелочку в право.
    Все должно пройти без проблем но если выдает ошибку типап не может сделать синхронизацию то прорвете выбрали вы правильный порт и правильное название вашего устройства.

    Шаг 7
    Нажимаем CTRL+SHIFT+M или Tools-->Serial Monitor, откроется новое окошко в котором мы будем смотреть какие значения выдают кнопки руля.
    Для тех кто воспользовался схемой с первой страницы то это по проще просто нажимаем на любую кнопку руля и видим какое он дает значение будут маленькая погрешность это нормально записываем каждой кнопки значения где нибудь и переходим к следующему шагу.

    Для тех кто воспользовался моей схемой.
    Начинаем искать с какого сопротивления нажатия кнопок руля не дадут настраивать часы, поясню часы начинают настраиваться если долго зажать кнопку MODE оно дает определенное сопротивление (или диапазон), и если такое же сопротивление появиться то к примеру при нажатии кнопки добавить звук будет давать такое же сопротивление то каждый раз будет редактировать часы при этом нажатии, по этому будем искать при каком сопротивлении не будет вызывать настройку часов и будут работать все кнопки итак начнем.
    Ставим самое маленькое сопротивление и начинаем нажимать
    кнопки короткими затем долинными нажатиями видим что часы не затрагивает хорошо идем дальше.
    Смотрим при каждом нажатии кнопки в Serial Monitor должно выдавать какое то значение если выдает значение каждой кнопке то значит записываем значение каждой кнопки и переходим к следующему шагу если не на всем кнопкам выдает значение то не расстраиваемся и подымаем сопротивление немножко и так до тех пор покамест не будет выдавать значение всех кнопок и они не будут реагировать на настройки часов.
    Терпение и все получиться у меня это взяло около 2 минут.

    Шаг 8
    Все значения кнопок которые мы записали вставляем в тот же скетч которым мы прошивали ардуино.

    PHP код:
    // Значения кнопок
    #define KEY_CH_MINUS    (175)
    #define KEY_CH_PLUS     (330)
    #define KEY_VOL_MINUS   (0)
    #define KEY_VOL_PLUS    (73)
    #define KEY_MODE        (530) 
    меняем на те которые получили

    в конце скрипта находим
    PHP код:
       Serial.print(dt1,DEC);
        
    Serial.print("   ");
        
    Serial.println(dt2,DEC); 
    и стираем эти строчки, или можно их отключить поставить в начале каждой строчкой // и видно будет сразу как они станут серими.
    Вот так
    PHP код:
    //    Serial.print(dt1,DEC);
    //   Serial.print("   ");
    //   Serial.println(dt2,DEC); 
    Теперь проверяем на ошибки и прошиваем.

    Шаг 9
    Я допишу завтра когда разберусь с Autohotkeys
    Последний раз редактировалось Jusper; 24.11.2012 в 03:36.

  6. #446
    Пользователь Аватар для jam!
    Регистрация
    23.05.2008
    Возраст
    42
    Сообщений
    24
    Вес репутации
    200

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

    Добрый день. Подскажите, для arduino nano v3 как будет схема подключения кнопок выглядеть? Подключил все как в первом посте, джойстик sony rm-x2s, ардуино (hkey config) никак не реагирует на нажатия кнопок и подключение резистора напрямую вообще, тестером джойстик мерится как надо, сопротивление меняется.
    Правда у меня резистор не 3.3 а 3.9кОм, конденсатор 0.01мкф. Это критично?

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

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

    Программа работает только с Carduino
    Нужно перепрошить дескриптор

  8. #448
    Пользователь Аватар для jam!
    Регистрация
    23.05.2008
    Возраст
    42
    Сообщений
    24
    Вес репутации
    200

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

    Chip, то есть сделать это?
    Цитата Сообщение от Jusper Посмотреть сообщение
    Шаг 4
    Желательно освободить все порты, отключить все не нужные вещи на время.
    Открываем скачавшийся программатор ардуино и подключим его к нашему ардуино.
    1. Нажимаем на Tools-->Board и выберем вашу модель ардуино.
    2. Нажимаем на Tools-->Serial Port и выберем порт к которому подключён ардуино.
    Можно узнать в диспетчере устройств-->Порты (Com LPT) нажать на плюс и там уведите ваше устройство а возле него написан на каком порте он подключён.

    Шаг 5
    Заливаем скетч тут у каждого разный работает может из за того что не все шаги были описаны понятно.
    Или как?

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

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


  10. #450
    Пользователь Аватар для jam!
    Регистрация
    23.05.2008
    Возраст
    42
    Сообщений
    24
    Вес репутации
    200

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

    Цитата Сообщение от Chip Посмотреть сообщение
    Спасибо, похоже, то что нужно

Страница 45 из 57 ПерваяПервая ... 353940414243444546474849505155 ... ПоследняяПоследняя

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

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

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

Ваши права

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