Обработчик энкодера для Ардуино

Дим M
Topic author, Администратор
Администратор
Avatar
Дим M
Topic author, Администратор
Администратор
Posts: 1334
Joined: 5 Apr 2013
With us: 7 years 7 months

#1by Дим » 15 Nov 2020, 14:57

На примере модуля энкодера для Ардуино создадим обработчик. Мне он понравился более чем другие. В данном примере будем убавлять/прибавлять яркость светодиода.

phpBB [media]

Обработчик энкодера для Ардуино.png
Обработчик энкодера для Ардуино
Обработчик энкодера для Ардуино.png (95.75 KiB) Viewed 57 times

Code: Select all

** Для управлением яркостью LED используется энкодер Sparkfun
*/
 
int brightness 
= 120;       // яркость LED, начинаем с половины
int fadeAmount = 10;        // шаг изменения яркости LED
unsigned long currentTime;
unsigned long loopTime;
const int pin_A = 12;       // pin 12
const int pin_B = 11;       // pin 11
unsigned char encoder_A;
unsigned char encoder_B;
unsigned char encoder_A_prev=0;
 
void setup
()  {
  Serial.begin(9600);  
  
// declare pin 9 to be an output:
  pinMode(9, OUTPUT);         // устанавливаем pin 9 как выход
  pinMode(pin_A, INPUT);
  pinMode(pin_B, INPUT);
  currentTime = millis();
  loopTime = currentTime; 
} 
 
void loop
()  {
  Serial.println(brightness); // вывод в Serial порт
  currentTime = millis();
  if(currentTime >= (loopTime + 5)){ // проверяем каждые 5мс (200 Гц)
    encoder_A = digitalRead(pin_A);     // считываем состояние выхода А энкодера 
    encoder_B = digitalRead(pin_B);     // считываем состояние выхода B энкодера    
    if((!encoder_A) && (encoder_A_prev)){    // если состояние изменилось с положительного к нулю
      if(encoder_B) {
        // выход В в полож. сост., значит вращение по часовой стрелке
        // увеличиваем яркость, не более чем до 255
        if(brightness + fadeAmount <= 255) brightness += fadeAmount;               
      
}   
      else 
{
        // выход В в 0 сост., значит вращение против часовой стрелки     
        // уменьшаем яркость, но не ниже 0
        if(brightness - fadeAmount >= 0) brightness -= fadeAmount;               
      
}   
 
    
}   
    encoder_A_prev 
= encoder_A;     // сохраняем значение А для следующего цикла 
     
    analogWrite
(9, brightness);   // устанавливаем яркость на 9 ножку
    
    loopTime 
= currentTime;
  }                       
}
i love you mxIni Mysql

! ! !


  • Similar Topics
    Replies
    Views
    Last post

Return to “Программирование”

Who is online (over the past 5 minutes)

Users browsing this forum: 1 guest