latchh:
The timings are correct, but when the case is HIGH for some reason I am printing both "on" and "off" to the monitor when I only want to be printing "on".
I didn't follow the action line by line but, I notice you've no break;* statements to conclude the cases. Without a break; execution flows right into the next statement - although sometimes this is the intent. If you set the warning level to max in IDE - file/preferences you'll see messages to this effect.