One Button Two Functions bug fix

Okay, will that makes it easier to understand. Software wise, what I would do is make functions to do the repetitive things like

          Effect = false;
          digitalWrite(LED, LOW);
          digitalWrite(RELAYN, HIGH);
          delay(1);
          digitalWrite(RELAYN, LOW);

Which would also make it easier to understand, and perhaps easier to spot the error.

Another weakness, you treat the differential drive pins separately, so that the state has to be managed by the consecutive flow of logic. This is not really good. You need to encapsulate the correct relay drive sequences of both pins in functions or object methods. It is the best way to avoid the confusion about program flow. As it is likely not directly related to relay logic itself, which when considered separately is a straightforward and foolproof task.