Ви не увійшли.
GyverEncoder.h
Зараз код має вигляд:
void loop()
{
//enc2.tick();
enc2.setTickMode(AUTO);
if (enc2.isLeft()&&state=="Radio")
{
LCD.clear();LCD.setCursor(0, 0);LCD.print (k);
k++;
s="MP3";
}
if (enc2.isRight()&&state=="Radio")
{
LCD.clear();LCD.setCursor(0, 0);LCD.print (k);
k--;
s="MP3";
}
if (enc2.isLeft()&&state=="MP3")
{
LCD.clear();LCD.setCursor(0, 1);LCD.print (z);
z++;
s="Radio";
}
if (enc2.isRight()&&state=="MP3")
{
LCD.clear();LCD.setCursor(0, 1);LCD.print (z);
z--;
s="Radio";
}
if (enc2.isClick())
{
state=s;
if (state=="Radio"){LCD.clear();LCD.setCursor(0, 0);LCD.print (k);}
if (state=="MP3"){LCD.clear();LCD.setCursor(0, 1);LCD.print (z);}
}
}
Перемикання працює якщо enc2.setTickMode(AUTO), але в цьому варіанті коли крутиш енкодер, то наявні пропуски, тобто на якийсь градус повернув і не завжди змінює число на екрані.
Якщо ставити enc2.tick(), то чітко змінюються дані на екрані, без пропусків. Але при натисканні на енкодер наявне перемикання як має бути і все, більше реакції на енкодер не має...
Доповнення. Таки запрацювало як потрібно. Потрібно було винести умову &&state== з перевірки події на енкодері в окрему умову IF, а вже в ній робити enc2.isRight()/enc2.isLeft().
Хоча мабуть є кращий спосіб...
вы обрабатываете энкодер с помощью какой то библиотеки.
какой - вы не указали.
пока то, что вы написали, ни о чём.
Чи можлива коректна робота такого варіанту?
if (enc2.isClick())
{
if (enc2.isLeft())
{
k++;
LCD.setCursor(0, 0);LCD.print (k);
}
}
Натискаючи на енкодер можна крутилкою змінювати значення.