Страница 43 из 70 ПерваяПервая ... 333738394041424344454647484953 ... ПоследняяПоследняя
Показано с 421 по 430 из 697
  1. #421
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,380
    Вес репутации
    10

    По умолчанию Re: Адаптер рулевых кнопок.

    Используй для энкодера нижеприведенный код
    PHP код:
    //http://compcar.ru    
    #define PIN 5  //номер аналогового порта   
    #define LIMIT 10 //предел погрешности сопротивления  
    #define encoder0PinA  2
    #define encoder0PinB  3
    byte bytes[4]; 
    unsigned long math_time,old_time,real_timeres_dt1res_d

    void setup() 
    {   
      
    pinMode(encoder0PinAINPUT); 
      
    digitalWrite(encoder0PinAHIGH);     // подключить подтягивающий резистор
      
    pinMode(encoder0PinBINPUT); 
      
    digitalWrite(encoder0PinBHIGH);    // подключить подтягивающий резистор

      
    attachInterrupt(0doEncoderAFALLING);  // настроить прерывание interrupt 0 на pin 2
      
    attachInterrupt(1doEncoderBFALLING);  // настроить прерывание interrupt 0 на pin 3
      
    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); // отправить прочитаное значение компьютеру         
          
    }  
    }

    void doEncoderA() // обработка прерывания
    {
      for(
    byte i=0i<4i++) bytes[i]=0;
      if(
    digitalRead(encoder0PinB)==HIGHbytes[1]=24; else bytes[1]=15
      
    Serial.write(bytes4);
    }  

    void doEncoderB() // обработка прерывания
    {
        for(
    byte i=0i<4i++) bytes[i]=0;
        if(
    digitalRead(encoder0PinA)==HIGHbytes[1]=15; else bytes[1]=24;
        
    Serial.write(bytes4);

    Последний раз редактировалось Chip; 02.03.2012 в 02:26.

  2. #422
    Пользователь Аватар для WhiteWings
    Регистрация
    05.02.2010
    Сообщений
    41
    Вес репутации
    325

    По умолчанию Re: Адаптер рулевых кнопок.

    ну, я его не с балды поменял, у меня с "else" очень плохо работает - обратно громкость меняет... тем не менее поставил на пробу этот код:
    PHP код:
    //http://compcar.ru    
    #define PIN 5  //номер аналогового порта   
    #define LIMIT 10 //предел погрешности сопротивления  
    #define encoder0PinA  2
    #define encoder0PinB  3
    byte bytes[4]; 
    unsigned long math_time,old_time,real_timeres_dt1res_d

    void setup() 
    {   
      
    pinMode(encoder0PinAINPUT); 
      
    digitalWrite(encoder0PinAHIGH);     // подключить подтягивающий резистор
      
    pinMode(encoder0PinBINPUT); 
      
    digitalWrite(encoder0PinBHIGH);    // подключить подтягивающий резистор

      
    attachInterrupt(0doEncoderAFALLING);  // настроить прерывание interrupt 0 на pin 2
      
    attachInterrupt(1doEncoderBFALLING);  // настроить прерывание interrupt 0 на pin 3
      
    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); // отправить прочитаное значение компьютеру         
          
    }  
    }

    void doEncoderA() // обработка прерывания
    {
      for(
    byte i=0i<4i++) bytes[i]=0;
      if(
    digitalRead(encoder0PinB)==HIGHbytes[1]=24; else bytes[1]=15
      
    Serial.write(bytes4);
    }  

    void doEncoderB() // обработка прерывания
    {
        for(
    byte i=0i<4i++) bytes[i]=0;
        if(
    digitalRead(encoder0PinA)==HIGHbytes[1]=15; else bytes[1]=24;
        
    Serial.write(bytes4);

    все аналогично...
    Через несколько секунд кручения энкодером вместо 1023 начал показывать 261888

    UPDATE:
    кстати, поставил скетч отсюда: http://www.compcar.ru/forum/showpost...39&postcount=1
    значения тоже умножаются на 256 через несколько оборотов...
    Хотя MONITOR показывает вот такое:
    25 7 25 7 25 7 25 7 25 7 25 7 25 7 25 7
    25 7 25 7 25 7 25 7 25 7 25 7 25 7 25 7
    25 7 25 7 25 7 25 7 25 7 25 7 25 7 5 7
    5 7 5 7 5 7 5 7 5 7 5 7 5 7 5 7 5 7
    то есть в нем всегда правильно отображается!

    Поставил отсюда: http://www.compcar.ru/forum/showpost...6&postcount=19
    все работает и в hotkey и в monitor, не умножаются числа...
    Последний раз редактировалось WhiteWings; 02.03.2012 в 02:41.

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

    По умолчанию Re: Адаптер рулевых кнопок.

    Не знаю в чем проблема, нет возможности проверить.
    А программу какую используешь?
    Да! обнулять массив после отправки данных не нужно
    не нужно
    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.write( bytes,4); // отправить прочитаное значение компьютеру
    bytes[0] = 0;
    bytes[1] = 0;
    bytes[2] = 0;
    bytes[3] = 0;

  4. #424
    Пользователь Аватар для WhiteWings
    Регистрация
    05.02.2010
    Сообщений
    41
    Вес репутации
    325

    По умолчанию Re: Адаптер рулевых кнопок.

    Программа HotKey_V2.9
    файлик от 23 января...
    Обнулял - от безысходности =) А вдруг помогло бы =)
    Последний раз редактировалось WhiteWings; 02.03.2012 в 02:44.

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

    По умолчанию Re: Адаптер рулевых кнопок.

    Попробуй вот этот скетч
    PHP код:
    //http://compcar.ru     
    #define PIN 5  //номер аналогового порта    
    #define LIMIT 10 //предел погрешности сопротивления   
    #define encoder0PinA  2 
    #define encoder0PinB  3 
    byte bytes[4];  
    unsigned long math_time,old_time,real_timeres_dt1res_d;  

    void setup()  
    {    
      
    pinMode(encoder0PinAINPUT);  
      
    digitalWrite(encoder0PinAHIGH);     // подключить подтягивающий резистор 
      
    pinMode(encoder0PinBINPUT);  
      
    digitalWrite(encoder0PinBHIGH);    // подключить подтягивающий резистор 

      
    attachInterrupt(0doEncoderAFALLING);  // настроить прерывание interrupt 0 на pin 2 
      
    attachInterrupt(1doEncoderBFALLING);  // настроить прерывание interrupt 0 на pin 3 
      
    Serial.begin (115200); 
    }  

    void loop() 
    {  
     for(
    byte i=0i<4i++) bytes[i]=0;
      
    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); // отправить прочитаное значение компьютеру          
          
    }   


    void doEncoderA() // обработка прерывания 

      for(
    byte i=0i<4i++) bytes[i]=0
      if(
    digitalRead(encoder0PinB)==HIGHbytes[1]=24; else bytes[1]=15;  
      
    Serial.write(bytes4); 
      
    delay(1);
    }   

    void doEncoderB() // обработка прерывания 

        for(
    byte i=0i<4i++) bytes[i]=0
        if(
    digitalRead(encoder0PinA)==HIGHbytes[1]=15; else bytes[1]=24
        
    Serial.write(bytes4); 
        
    delay(1);

    Последний раз редактировалось Chip; 02.03.2012 в 03:29.

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

    По умолчанию Re: Адаптер рулевых кнопок.

    Выложил обновленную версию программы.
    Чтобы не испортить настройки меняем только экзешник
    Попробуйте и отпишитесь
    Последний раз редактировалось Chip; 02.03.2012 в 03:27.

  7. #427
    Пользователь Аватар для WhiteWings
    Регистрация
    05.02.2010
    Сообщений
    41
    Вес репутации
    325

    По умолчанию Re: Адаптер рулевых кнопок.

    Обновил, попробовал этот скетч, но:
    Все тоже самое =(
    Delay в энкодерах пытался выставить 10,100,1000 - не помогло...

  8. #428
    Пользователь Аватар для WhiteWings
    Регистрация
    05.02.2010
    Сообщений
    41
    Вес репутации
    325

    По умолчанию Re: Адаптер рулевых кнопок.

    нету идей больше? =(
    энкодер у меня из старой японской магнитолы 2001 года, с трещеткой...

  9. #429
    Пользователь
    Регистрация
    06.11.2009
    Сообщений
    22
    Вес репутации
    183

    По умолчанию Re: Адаптер рулевых кнопок.

    Всех приветствую.
    Планирую установку carpc в AUDI a6 f4. Думал приобрести данное устройства чтобы подключить кнопки руля и MMI к компу, это возможно?
    Хочется использовать все кнопки и крутилку для управления компом.
    Изображения Изображения

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

    По умолчанию Re: Адаптер рулевых кнопок.

    если этими кнопками не планируется управлять штатной системой , то возможно

Страница 43 из 70 ПерваяПервая ... 333738394041424344454647484953 ... ПоследняяПоследняя

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

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

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

Ваши права

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