Страница на этапе разработки
В данном уроке мы с Вами рассмотрем работы энкодера:
Как видно у экодера три ножки: земля, вывод А и вывод Б. Если мы с Вами крутим енкодер то в зависимости от направления вращения сначала будет замыкатьс канал А, а потом кнал Б или наоборот. Таким образом считывая состояние его ножек мы можем определить в каком направлении вращается наш энкодер и уже выполнить то или иное действие.
Для проверки работы энкодера мы с Вами напишем не большую программу которая будет менять яркость свечения 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
// Увеличиваем красный цвет
{
if
GIFR = (1 << INTF0);
unsigned
PORTB &= ~(1 << PB0);
// Инкрементируем счетчик
TIMSK |= (1 << TOIE0);
((PIND & (1 << PD1)) == 0)