Страница 11 из 18 ПерваяПервая ... 567891011121314151617 ... ПоследняяПоследняя
Показано с 101 по 110 из 178
  1. #101
    Местный
    Регистрация
    11.11.2009
    Возраст
    35
    Сообщений
    114
    Вес репутации
    200

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

    например мы садим энкодеры на каналы 2,3 и 4,5
    поправьте плз
    PHP код:
    void loop()  
    {  
      if(
    digitalRead(2)==HIGH){
    bytes[0]=25;
      
    Serial.writebytes,2); 
      
    bytes[0]=0;
    }else{
    bytes[0]=5;
      
    Serial.writebytes,2); 
      
    bytes[0]=0;
    }   
      if(
    digitalRead(3)==HIGH){
    bytes[0]=5;
      
    Serial.writebytes,2); 
      
    bytes[0]=0;
    }else{
    bytes[0]=25;
      
    Serial.writebytes,2); 
      
    bytes[0]=0;
    }
      if(
    digitalRead(4)==HIGH){
    bytes[0]=35;
      
    Serial.writebytes,2); 
      
    bytes[0]=0;
    }else{
    bytes[0]=15;
      
    Serial.writebytes,2); 
      
    bytes[0]=0;
    }
      if(
    digitalRead5)==HIGH){
    bytes[0]=15;
      
    Serial.writebytes,2); 
      
    bytes[0]=0;
    }else{
    bytes[0]=35;
      
    Serial.writebytes,2); 
      
    bytes[0]=0;


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

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

    Все гораздо сложнее, изучайте Код Грея
    энкодера под рукой нет , так что код проверить не могу.
    PHP код:
    #define encoder0PinA  2   
    #define encoder0PinB  3  
    #define encoder1PinA  4 
    #define encoder1PinB  5
    byte bytes[2]={0,7} ;    

    void setup()    
    {      
      
    pinMode(encoder0PinAINPUT);    
      
    digitalWrite(encoder0PinAHIGH);     // подключить подтягивающий резистор   
      
    pinMode(encoder0PinBINPUT);    
      
    digitalWrite(encoder0PinBHIGH);    // подключить подтягивающий резистор  
      
    pinMode(encoder1PinAINPUT);    
      
    digitalWrite(encoder1PinAHIGH);    // подключить подтягивающий резистор   
      
    pinMode(encoder1PinBINPUT);    
      
    digitalWrite(encoder1PinBHIGH);    // подключить подтягивающий резистор 
       
      
    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]=8;
           
    bytes[1]=7;   
          
    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);
    }   

    // обработка прерывания   
    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;   


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

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

    отлично работает!!!!

  4. #104
    Местный
    Регистрация
    11.11.2009
    Возраст
    35
    Сообщений
    114
    Вес репутации
    200

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

    довольно большой дребезг.. кондеры по 9 нФ

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

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

    Дребезг на каких входах? Кондеры можно до 0,1мкф увеличить или подобрать компромиссный вариант, с 0,1 мкф могут быть пропуски при резком вращении
    Последний раз редактировалось Chip; 23.10.2011 в 03:25.

  6. #106
    Местный
    Регистрация
    11.11.2009
    Возраст
    35
    Сообщений
    114
    Вес репутации
    200

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

    на 2 и 3 субъективно сильнее.. и бывает что за 1 щелчек по 2 посылки. правда грешу на энкодер...один работает менее стабильно. перегрел я его походу

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

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

    Пробуй кондерами пофиксить, можно конечно и программно, но это сложнее будет для тебя

  8. #108
    Местный
    Регистрация
    11.11.2009
    Возраст
    35
    Сообщений
    114
    Вес репутации
    200

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

    спасибо попытаюсь

  9. #109
    Пользователь Аватар для WhyMax
    Регистрация
    09.10.2011
    Возраст
    31
    Сообщений
    54
    Вес репутации
    164

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

    У менявот такой энкодер:


    GND и D4 - к этим контактам подключается кнопка?
    Они замыкаются при нажатии.

    А вот оставшиеся 3 контакта почему-то прозваниваются между собой, сопротивления никакого нет, это нормально?
    Последний раз редактировалось WhyMax; 20.11.2011 в 16:11.

  10. #110
    Пользователь
    Регистрация
    28.10.2010
    Возраст
    38
    Сообщений
    42
    Вес репутации
    174

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

    Цитата Сообщение от WhyMax Посмотреть сообщение
    А вот оставшиеся 3 контакта почему-то прозваниваются между собой, сопротивления никакого нет, это нормально?
    да нормально

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

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

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

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

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

Ваши права

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