Подключаем энкодер к микроконтроллеру Atmega8 в среде программирования Atmel Studio.

Страница на этапе разработки

В данном уроке мы с Вами рассмотрем работы энкодера:
Как видно у экодера три ножки: земля, вывод А и вывод Б.  Если мы с Вами крутим енкодер то в зависимости от направления вращения сначала будет замыкатьс канал А, а потом кнал Б или наоборот. Таким образом считывая состояние его ножек мы можем определить в каком направлении вращается наш энкодер и уже выполнить то или иное действие. 
Для проверки работы энкодера мы с Вами напишем не большую программу которая будет менять яркость свечения RGB светодиода.
При этом некоторые энкодеры еще внутри себя имеют встроенную кнопку, которорую мы с Вами задействуем.
Програмный код:

// Принцип работы энкодера. Управляем RGB светодиодом с помощью энкодера 
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h> volatile unsigned char pwm_r, pwm_g, pwm_b, button = 0; // Обработчик внешнего прерывания INT0 ISR(SIG_INTERRUPT0) { _delay_us(50); if((PIND & (1 << PD2)) == 0) {
_delay_us(50);
if{// Крутим по часовой стрелке if{ // Если включен режим настройки красного цвета if// Уменьшаем красный цвет } if{// Если включен режим настройки зеленого цвета
  if// Уменьшаем зеленый цвет}
if{// Уменьшаем синий цвет}// Крутим против часовой стрелки
if// Увеличиваем красный цвет{
ifGIFR = (1 << INTF0);
unsigned PORTB &= ~(1 << PB0);
// Инкрементируем счетчик TIMSK |= (1 << TOIE0); ((PIND & (1 << PD1)) == 0)