Показано с 1 по 10 из 178

Древовидный режим

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

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

    Давно хотел провести эксперимент с энкодером и прикрутить его к Arduino Nano
    Но все никак не удавалось его приобрести .
    Вчера разобрал старую убитую мышку и выпаял из нее Энкодер для экспериментов. Все оказалось достаточно просто . Написал скетч для cArduino / Arduino, взял уже готовую программу для ПК написанную для другого проекта и через 15 мин. я уже регулировал громкость при помощи энкодера.
    Недавно приобрел энкодер с нажатием и подправил Sketch под него, теперь можно назначать вращение энкодера с нажатием и без него или назначать комбинацию клавишь только на нажатие

    Программу скачиваем здесь

    Код для Arduino Nano:
    PHP код:
    #define encoder0PinA  2  
    #define encoder0PinB  3 
    #define encoder0PinC  4
    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;    

    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	enc.jpg 
Просмотров:	31740 
Размер:	46.1 Кб 
ID:	12215  
    Последний раз редактировалось Chip; 19.03.2017 в 02:47.

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

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

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

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

Ваши права

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