issues with Serial.println for unrecognized commands

This is a broken-chain-of-if-then-else bug.

Without the else, your code is falling into the check for val=='2' even if it has already established that val=='1'. This is the case for the bug you asked about.

Unfortunately, since we know val is not '2' (when it's '1'), the else clause after the if '2' check is firing in this case, printing "Huh". Which is the behavior you didn't want.

So, putting an else on the if val==2 properly chains the character checks, preventing the final else clause from firing in the wrong case.

Does that help?

-br