Спасибо всем ответившим! И правда, не работало условие если меньше 1, то 0. Поправил, сменил тип на int и вот так переделал. Работает. Про операторы min() max() просто не знал.
void VolDown() {
Vol--;
Vol = max(Vol,0);
radio.setVolume(Vol);
DispUpdate();
}
Потом выкинул библиотеку кнопки и написал свою, попроще.
Потом привел все шрифты к одному размеру и выяснил что последняя цифра частично вылазит за пределы экрана периодически(по вертикали). Может это switchFrame так работает когда шрифты на ходу меняются, но без нее никак- дисплей мерцает в цикле. Установил дефолтный шрифт, выровнял заново символы в строке, а потом добавил размер и шрифт тех символов, которые надо. Заработало отлично!