Модуль поворотного энкодера
Рабочее напряжение: 5 В
Количество импульсов в одном круге: 20
***************************************************************************
Тестовый код:
int redPin = 2;
int yellowPin = 3;
int greenPin = 4;
int aPin = 6;
int bPIN = 7;
int buttonPin = 5;
int state = 0;
int longPeriod = 5000; // Время в зеленом или красном диапазоне
int shortPeriod = 700; // Период времени при изменении
int targetCount = shortPeriod;
int count = 0;
аннулирует настройку()
{
pinMode (aPin, ВВОД);
pinMode (bPIN, ВВОД);
pinMode (штырь кнопки, ВВОД);
pinMode (красный штырь, ВЫВОД);
pinMode (желтый штырь, ВЫВОД);
pinMode (зеленый штырь, ВЫВОД);
}
void loop ()
{
count ++;
if (цифровой перевод (кнопка))
{
Установить подсветку (ВЫСОКО, ВЫСОКО, ВЫСОКО);
}
ещё
{
int change = getEncoderTurn();
int newPeriod = longPeriod + (изменение * 1000);
if (newPeriod >= 1000 && newPeriod targetCount)
{
setState();
count = 0;
}
}
задержка(1);
}
int getEncoderTurn()
{
// возвращает -1, 0 или +1
статический int oldA = НИЗКИЙ;
статический int oldB = НИЗКИЙ;
результат int = 0;
int newA = digitalRead(aPin);
int newB = digitalRead(bPIN);
if (newA != oldA || newB != oldB)
{
// что-то изменилось
if (oldA == НИЗКИЙ && newA == ВЫСОКИЙ)
{
результат = -(oldA * 2 - 1);
}
}
oldA = newA;
oldA = newB;
возвращает результат;
}
int setState()
{
if (состояние == 0)
{
Заданные значения (ВЫСОКИЙ, НИЗКИЙ, НИЗКОПЕРИОДИЧЕСКИЙ);
targetCount = длительный период;
состояние = 1;
}
else if (состояние == 1)
{
Заданные значения (ВЫСОКИЕ, HIGH, LOW);
targetCount = Короткий период;
состояние = 2;
}
еще, если (состояние == 2)
{
Заданные значения (НИЗКИЕ, LOW, HIGH);
targetCount = длительный период;
состояние = 3;
}
еще, если (состояние == 3)
{
Заданные значения (НИЗКИЙ, ВЫСОКИЙ, НИЗКОПЕРИОДИЧЕСКИЙ);
targetCount = короткий период;
состояние = 0;
}
}
индикаторы аннулирования (int red, int yellow, int green)
{
digitalWrite (красный штырь, red);
digitalWrite (желтый штырь, yellow);
digitalWrite (зеленый штырь, green);
}
***************************************************************************
Отзывы
Оставить отзыв