Подозреваю, что вот эта функция void BluetoothTick() вызывается слишком часто, а в терминал блютуз а отправляется символ конца строки и переноса каретки. Таким образом, возможна обработка сначала цифры, и функция ее возвращает, а потом отдельно символ конца строки. Он не является числом, поэтому parseInt вернёт ноль, он же вернётся в терминал и переключит режим. Если вводить двузначное число, вернёт двузначное или два однозначных? Если в терминале отключить отправку символа конца строки?