Как уже упоминалось в комментариях
button == 0
и button == 0x00
- это одно и то же. Так что можно опустить.
button == '0'
не имеет смысла, поскольку '0'
равно 48
. Это никогда не будет правдой в вашей программе.
Из того, что я вижу в исходном коде исходного кода библиотеки MFShield описанное поведение не должно быть возможным.
// Keys polling
if (onKeyPress_func != NULL && time - t_buttons >= MFS_BUTTONS_POLLING_INTERVAL_MS)
{
t_buttons = time;
uint8_t key_mask = 0;
for (uint8_t i=0; i < 3; i++)
key_mask |= (!digitalRead(KEY_PIN[i]) << i);
if (key_mask != key_mask_pre)
{
if (key_mask != 0)
{
key_mask_pre = key_mask;
onKeyPress_func (ffs(key_mask));
}
else
key_mask_pre = 0;
}
}
Код проверяет все 3 кнопки и устанавливает бит в key_mask для каждой нажатой кнопки.
Указанная вами функция обратного вызова onKeyPress_func
вызывается только в том случае, если key_mask
не равно 0 и когда состояние ключа изменилось с момента последней проверки.
Таким образом, используя этот код, вы никогда не должны получать печать «Нажата кнопка: 0», как вы заявляете. Ваш button
не может стать 0
. Это либо
По той же причине вы никогда не будете вводить свое заявление if.