Страница 39 из 57 ПерваяПервая ... 293334353637383940414243444549 ... ПоследняяПоследняя
Показано с 381 по 390 из 561
  1. #381
    Местный
    Регистрация
    11.11.2009
    Возраст
    38
    Сообщений
    114
    Вес репутации
    230

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

    В чем может быть проблема?

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

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

    2832 такого значения быть не должно, максимальное значение это 1023

  3. #383
    Местный
    Регистрация
    11.11.2009
    Возраст
    38
    Сообщений
    114
    Вес репутации
    230

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

    Из-за чего тогда у меня могут быть такие значения?

    PHP код:
    #define encoder0PinA  2    
    #define encoder0PinB  3   
    #define encoder1PinA  4  
    #define encoder1PinB  5 
    byte bytes[2]={0,20} ;     

    void setup()     
    {       
      
    pinMode(encoder0PinA, INPUT);     
      
    digitalWrite(encoder0PinA, HIGH);     // подключить подтягивающий резистор    
      
    pinMode(encoder0PinB, INPUT);     
      
    digitalWrite(encoder0PinB, HIGH);    // подключить подтягивающий резистор   
      
    pinMode(encoder1PinA, INPUT);     
      
    digitalWrite(encoder1PinA, HIGH);    // подключить подтягивающий резистор    
      
    pinMode(encoder1PinB, INPUT);     
      
    digitalWrite(encoder1PinB, HIGH);    // подключить подтягивающий резистор  
     
      //10 кнопок. 2 на энкодере, 8 на панели.
       
    pinMode(7, INPUT);   
      
    digitalWrite(7, 1);  
      
    pinMode(8, INPUT);  
      
    digitalWrite(8, 1); 
      
    pinMode(9, INPUT);  
      
    digitalWrite(9, 1); 
      
    pinMode(10, INPUT);   
      
    digitalWrite(10, 1); 
      
    pinMode(11, INPUT);   
      
    digitalWrite(11, 1); 
      
    pinMode(12, INPUT); 
      
    digitalWrite(12, 1);
       
    pinMode(14, INPUT);
      
    digitalWrite(14, 1);
      
    pinMode(15, INPUT); 
      
    digitalWrite(15, 1); 
      
    pinMode(16, INPUT); 
      
    digitalWrite(16, 1);  
      
    pinMode(17, INPUT); 
      
    digitalWrite(17, 1);  
     
      
    attachInterrupt(0, doEncoderA, FALLING);  // настроить прерывание interrupt 0 на pin 2    
      
    attachInterrupt(1, doEncoderB, FALLING);  // настроить прерывание interrupt 0 на pin 3    
      
    Serial.begin (115200);    
    }    

    unsigned graydecode(unsigned gray) 
    { 
     
    unsigned bin; 

     for (
    bin = 0; gray; gray >>= 1) 
        
    bin ^= gray; 

     return 
    bin; 
    } 

    void loop()    
    {      
           if(
    digitalRead(7)==LOW) 
       {
         
    bytes[1]=7;
          
    Serial.write( bytes,2);  
          while(
    digitalRead(7)==LOW){delay(50);}
           
    bytes[1]=20; 
       }
          if(
    digitalRead(8)==LOW) 
       {
         
    bytes[1]=8;
          
    Serial.write( bytes,2);  
          while(
    digitalRead(8)==LOW){delay(50);}
           
    bytes[1]=20; 
       }
       if(
    digitalRead(9)==LOW) 
       {
         
    bytes[1]=9;
          
    Serial.write( bytes,2);  
          while(
    digitalRead(9)==LOW){delay(50);}
           
    bytes[1]=20; 
       }
          if(
    digitalRead(10)==LOW) 
       {
         
    bytes[1]=10;
          
    Serial.write( bytes,2);  
          while(
    digitalRead(10)==LOW){delay(50);}
           
    bytes[1]=20; 
       }
          if(
    digitalRead(11)==LOW) 
       {
         
    bytes[1]=11;
          
    Serial.write( bytes,2);  
          while(
    digitalRead(11)==LOW){delay(50);}
           
    bytes[1]=20; 
       }
          if(
    digitalRead(12)==LOW) 
       {
         
    bytes[1]=12;
          
    Serial.write( bytes,2);  
          while(
    digitalRead(12)==LOW){delay(50);}
           
    bytes[1]=20; 
       }
       if(
    digitalRead(14)==LOW) 
       {
         
    bytes[1]=14;
          
    Serial.write( bytes,2);  
          while(
    digitalRead(14)==LOW){delay(50);}
           
    bytes[1]=20; 
       }
          if(
    digitalRead(15)==LOW) 
       {
         
    bytes[1]=15;
          
    Serial.write( bytes,2);  
          while(
    digitalRead(15)==LOW){delay(50);}
           
    bytes[1]=20; 
       }
          if(
    digitalRead(16)==LOW) 
       {
         
    bytes[1]=16;
          
    Serial.write( bytes,2);  
          while(
    digitalRead(16)==LOW){delay(50);}
           
    bytes[1]=20; 
       }
          if(
    digitalRead(17)==LOW) 
       {
         
    bytes[1]=17;
          
    Serial.write( bytes,2);  
          while(
    digitalRead(17)==LOW){delay(50);}
           
    bytes[1]=20; 
       }


     static 
    uint8_t tmp_code = 0;  
     
    uint8_t gray_code = digitalRead(encoder1PinA) | (digitalRead(encoder1PinB) << 1), 
      
    code = graydecode(gray_code); 
     if (
    code == 0) 
     { 
       if (
    tmp_code == 3) 
         { 
           
    bytes[0]=3; 
           
    bytes[1]=20;    
          
    Serial.write( bytes,2);   
          
    bytes[0]=0;   
         } else if (
    tmp_code == 1) 
                   { 
                      
    bytes[0]=4; 
                     
    bytes[1]=20;    
                      
    Serial.write( bytes,2);   
                      
    bytes[0]=0;  
                   } 
      } 
     
    tmp_code = code; 
     
    delay(2); 
     
    }    

    // обработка прерывания    
    void doEncoderA()    
    {    
      if(
    digitalRead(encoder0PinB)==HIGH){bytes[0]=1;}else{bytes[0]=2;}     
      
    Serial.write( bytes,2);   
      
    bytes[0]=0;  
    }      

    // обработка прерывания    
    void doEncoderB()    
    {    
        if(
    digitalRead(encoder0PinA)==HIGH){bytes[0]=2;}else{bytes[0]=1;}    
        
    Serial.write( bytes,2);   
        
    bytes[0]=0;    
    } 
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	Untitled-2.jpg 
Просмотров:	663 
Размер:	83.0 Кб 
ID:	13241  

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

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

    Ты не подключил внутренние подтягивающие резисторы как на энкодере, и вообще лучше опрашивать порты в цикле for , код будет компактнее

  5. #385
    Местный
    Регистрация
    11.11.2009
    Возраст
    38
    Сообщений
    114
    Вес репутации
    230

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

    digitalWrite(7, 1);

    Как это не подключил....

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

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

    while(digitalRead(10)==LOW){delay(50);}
    bytes[1]=20;
    Это для чего?
    еще нужно бороться с дребезгом, для твоего скетча предел погрешности нужно сделать равным =0, вести опрос портов в цикле
    for(перебор всех портов i) digitalRead(i)
    Последний раз редактировалось Chip; 26.10.2011 в 15:26.

  7. #387
    Местный
    Регистрация
    11.11.2009
    Возраст
    38
    Сообщений
    114
    Вес репутации
    230

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

    Цитата Сообщение от Chip Посмотреть сообщение
    Это для чего?
    Ты в своем скетче так кнопку энкодера описал, я просто по наналогии повторил.
    PHP код:
     if(digitalRead(encoder0PinC)==LOW)  
       { 
         
    bytes[1]=8; 
          
    Serial.write( bytes,2);   
          while(
    digitalRead(encoder0PinC)==LOW){delay(50);} 
           
    bytes[1]=7;  
       } 
    Я так понимаю это у тебя для сочетания нажатия с поворотом? Правда я не понял зачем задержка нужна.Чтоб во время поворота энкодара дребезг на кнопке не мешал?
    Цитата Сообщение от Chip Посмотреть сообщение
    еще нужно бороться с дребезгом, для твоего скетча предел погрешности нужно сделать равным =0, вести опрос портов в цикле
    Погрешность в autohotkey?
    В цикле попробую сделать.
    Последний раз редактировалось SiMuS; 26.10.2011 в 15:34.

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

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

    У тебя нет погрешности , так как ты отправляешь фиксированные значения

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

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

    Обновление, выпущена бета версия программы упраления рулевыми кнопками
    Пробуем и отписываемся
    Последний раз редактировалось Chip; 02.11.2011 в 16:26.

  10. #390
    Пользователь Аватар для WhyMax
    Регистрация
    09.10.2011
    Возраст
    34
    Сообщений
    54
    Вес репутации
    195

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

    Из сервиса мануала моего авто:
    Remote audio control switch resistance

    All switches released (OFF): 5119 – 5223 Ом
    Switch “1” pushing on (ON): 55 – 57 Ом
    Switch “2” pushing on (ON): 129 – 133 Ом
    Switch “3” pushing on (ON): 238 – 244 Ом
    Switch “4” pushing on (ON): 416 – 426 Ом
    Switch “5” pushing on (ON): 743 – 759 Ом
    Switch “6” pushing on (ON): 1555 – 1587 Ом


    Посоветуйте пожалуйста, какого номинала лучше воткнуть резистор между разъемами +5V и A5?

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

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

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

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

Ваши права

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