LCD pulsing text

You are clearing or writing the display all the time, depending on a value that is updated muliple times per run in your loop.
Maybe you should first check all inputs, set the output message accordingly and then check to see if that message is already present before you write it to the display.
The goal of this is to only write to the display if the message has changed.
I don't think that is what you are doing right now because currState is updated at least 3 times each run.

Viel Erfolg.