Страница 14 из 18 ПерваяПервая ... 489101112131415161718 ПоследняяПоследняя
Показано с 131 по 140 из 178
  1. #131
    Пользователь Аватар для WhyMax
    Регистрация
    09.10.2011
    Возраст
    32
    Сообщений
    54
    Вес репутации
    172

    По умолчанию Re: Управление при помощи поворотного энкодера (Rotary Encoder)

    очень странно, решил попробовать проверить второй энкодер, код такой:

    PHP код:
    #define encoder0PinA  5   
    #define encoder0PinB  6  
    #define encoder0PinC  7 
    byte bytes[2]={0,7} ;    

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

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

      
    Serial.begin (115200);   
    }    

    void loop()   
    {     
     if(
    digitalRead(encoder0PinC)==LOW)  
       { 
         
    bytes[1]=8
          
    Serial.writebytes,2);   
          while(
    digitalRead(encoder0PinC)==LOW){delay(50);} 
           
    bytes[1]=7;  
       } 

    }   

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

    // обработка прерывания   
    void doEncoderB()   
    {   
        if(
    digitalRead(encoder0PinA)==HIGH){bytes[0]=5;}else{bytes[0]=25;}   
        
    Serial.writebytes,2);  
        
    bytes[0]=0;     

    Работает только кнопка

  2. #132
    Пользователь Аватар для WhyMax
    Регистрация
    09.10.2011
    Возраст
    32
    Сообщений
    54
    Вес репутации
    172

    По умолчанию Re: Управление при помощи поворотного энкодера (Rotary Encoder)

    Методом проб остановился на таком скетче.
    Первый энкодер работает как надо, у второго отсутствует вращение+нажатие.

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

    void setup()     
    {       
      
    pinMode(encoder0PinAINPUT);     
      
    digitalWrite(encoder0PinAHIGH);     // подключить подтягивающий резистор    
      
    pinMode(encoder0PinBINPUT);     
      
    digitalWrite(encoder0PinBHIGH);    // подключить подтягивающий резистор   
      
    pinMode(encoder0PinCINPUT);     
      
    digitalWrite(encoder0PinCHIGH);    // подключить подтягивающий резистор  
      
    pinMode(encoder1PinAINPUT);     
      
    digitalWrite(encoder1PinAHIGH);    // подключить подтягивающий резистор    
      
    pinMode(encoder1PinBINPUT);     
      
    digitalWrite(encoder1PinBHIGH);    // подключить подтягивающий резистор  
      
    pinMode(encoder1PinCINPUT);     
      
    digitalWrite(encoder1PinCHIGH);    // подключить подтягивающий резистор  
        
      
    attachInterrupt(0doEncoderAFALLING);  // настроить прерывание interrupt 0 на pin 2    
      
    attachInterrupt(1doEncoderBFALLING);  // настроить прерывание interrupt 0 на pin 3    
      
    Serial.begin (115200);    
    }    

    unsigned graydecode(unsigned gray

     
    unsigned bin

     for (
    bin 0graygray >>= 1
        
    bin ^= gray

     return 
    bin


    void loop()    
    {      
     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]=9
           
    bytes[1]=6;    
          
    Serial.writebytes,2);   
          
    bytes[0]=0;   
         } else if (
    tmp_code == 1
                   { 
                      
    bytes[0]=9
                     
    bytes[1]=7;    
                      
    Serial.writebytes,2);   
                      
    bytes[0]=0;  
                   } 
      } 
     
    tmp_code code
     
    delay(2); 
     
      if(
    digitalRead(encoder0PinC)==LOW)  
       { 
         
    bytes[1]=8
          
    Serial.writebytes,2);   
          while(
    digitalRead(encoder0PinC)==LOW){delay(50);} 
           
    bytes[1]=7;  
       }
        if(
    digitalRead(encoder1PinC)==LOW)  
       { 
         
    bytes[1]=6
          
    Serial.writebytes,2);   
          while(
    digitalRead(encoder1PinC)==LOW){delay(50);} 
           
    bytes[1]=7;  
       }
    }    

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

    // обработка прерывания    
    void doEncoderB()    
    {    
        if(
    digitalRead(encoder0PinA)==HIGH){bytes[0]=5;}else{bytes[0]=25;}    
        
    Serial.writebytes,2);   
        
    bytes[0]=0;    

    Последний раз редактировалось WhyMax; 22.11.2011 в 05:10.

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

    По умолчанию Re: Управление при помощи поворотного энкодера (Rotary Encoder)

    chip подскажи что может влиять губительно на считывание энкодера?
    Когда энкодер впаиваю в плату - периодическинаглухо отказывается читать его, или шлет мусор как будто контакт где-то плохой. Хотя подпаян прям к ножкам без дорожек, общая тока масса разведена.(на платке еще кнопки резистивные есть. с ними масса общая)
    если же энкодер напрямую цеплять на провода, изолируя от платы, то считывается отлично. К плате с ардуиной плата энкодера подключена шлейфом от hdd

  4. #134
    Пользователь
    Регистрация
    18.11.2011
    Возраст
    41
    Сообщений
    70
    Вес репутации
    175

    По умолчанию Re: Управление при помощи поворотного энкодера (Rotary Encoder)

    вопрос к чипу. в начале темы написано примерно так "выпаял колесо от мыши и припаял к адруино"

    а нельзя мышь целиком было использовать что бы не тратить плату ардуино?

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

    По умолчанию Re: Управление при помощи поворотного энкодера (Rotary Encoder)

    Я это делал для того что бы попробовать, проверить и выложить для других, под рукой энкодера не было вот и выпаял из неисправной старой мышки.
    С таким подходом можно было бы написать здесь "Для чего этот форум, есть же еще форумы? "
    Последний раз редактировалось Chip; 06.01.2012 в 23:31.

  6. #136
    Пользователь
    Регистрация
    18.11.2011
    Возраст
    41
    Сообщений
    70
    Вес репутации
    175

    По умолчанию Re: Управление при помощи поворотного энкодера (Rotary Encoder)

    зачем всё в штыки принимать. просто было не ясно вот и спросил. ведь по идее можно использовать мышь целиком не расходуя плат правильно? Вопрос в следующем, можно ли использовать две мышки - два енкодера? что бы виндовс определял их разными? одну на громкость другую на радио поставить? я в послеке живу. мышь маленькую купить рублей за 200-300 проблем не возникнет, в отличии от андруино. енкодеры у меня есть. вот кстати прочтите пожалуйста тему
    http://www.compcar.ru/forum/showthre...0768#post90768
    вопрос про радио тебе адресовал, т.к. у тебя есть тема про радио из магнитол

  7. #137
    Пользователь
    Регистрация
    18.11.2011
    Возраст
    41
    Сообщений
    70
    Вес репутации
    175

    По умолчанию Re: Управление при помощи поворотного энкодера (Rotary Encoder)

    вопрос к знающим людям. запустил енкодер, все работает. но иногда либо зависает на одном месте положение звука (смотрю по микшеру) и пока паузу не выждешь так и будет на одном месте дергатся. либо значение в хоткей прыгает с нужных 1817 1797 до 6 тысяч и до 1243. поставил конденсаторы с маркировкой 104 и 103. может в них дело? какие в идеале нужно поставить подскажите пожалуйста, токо не в микрофаратах а для чайника - в таких же цифрах на кондерах. Еще вопрос, плата с которой снял енкодер, от два дин магнитолы, в принципе енкодер там идет через конденсаторы так же как и у чипа в схеме, но они smd и совсем не подписные, маленькие желтенькие. подключил вчера к ногам енкодера не снимая с платы (думал что эти конденсаторы пойдут) запустил монитор, в нем постоянно бегут цифры, значения сейчас не помню, может ли это происходить из за того что енкодер подключен в плате к микросхемам? и подойдут ли smd конденсаторы которые стоят на плате? если необходима фотография я ее сделаю.

    Сегодня просто озадачился вчерашним фиаско - подумал что возможно надо было просто перерезать дороги идущие от енкодера к микросхеме.
    Последний раз редактировалось mish0k; 15.01.2012 в 00:20.

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

    По умолчанию Re: Управление при помощи поворотного энкодера (Rotary Encoder)

    конденсаторы нужно 104

  9. #139
    Пользователь
    Регистрация
    18.11.2011
    Возраст
    41
    Сообщений
    70
    Вес репутации
    175

    По умолчанию Re: Управление при помощи поворотного энкодера (Rotary Encoder)

    перерезал дорожки. заработал енкодер с теми маленькими что там стоят

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

    По умолчанию Re: Управление при помощи поворотного энкодера (Rotary Encoder)

    Тема старая, но сейчас стала актуальна. Подключил 1 энкодер, всё работает, спасибо! Но вот с подключением второго пока не очень. Можно попросить кого-нибудь выложить схему подключения двух энкодеров? Заранее благодарю!

Страница 14 из 18 ПерваяПервая ... 489101112131415161718 ПоследняяПоследняя

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

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

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

Метки этой темы

Ваши права

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