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