Ви не увійшли.
Сторінки 1
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().
Хоча мабуть є кращий спосіб...
Остання редакція Partyzan (2021-11-22 00:19:05)
Неактивний
Сторінки 1