Arduino uses solid state relay power control for H-bridge.
Fig. 1

Arduino SSR Power Enable Program

by Lewis Loflin

In fig. 1 a solid state relay is used as a power enable switch for a generic H-bridge circuit. Below is the program used to operate the above.

Pressing S1 and S2 together enables power. Press both again and power is off.

Arduino digital pin 11 (LED3) turns the solid state relay ON-OFF. This is done by reading I/O pin state then inverting (XOR or NOT) the result then writing it back.


#define SW1 2
#define SW2 3
#define LED1 9
#define LED2 10
#define LED3 11
#define pot 0


// HIGH = 1 and LOW = 0

#define ON 1
#define OFF 0

byte temp;

void setup() {
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(SW1, INPUT);
  digitalWrite(SW1, HIGH); // pull up on
  pinMode(SW2, INPUT);
  digitalWrite(SW2, HIGH); // pull up on


}

void loop() {
  delay(100);

  if ( S1() && !S2() ) {
    delay(200);
    if (S2()) { } // do nothing
    else digitalWrite(LED1, 1);
  }
  else digitalWrite(LED1, 0);

  if ( S2() && !S1() ) {
    delay(200);
    if ( S1() ) { } // do nothing
    else digitalWrite(LED2, 1);
  }
  else digitalWrite(LED2, 0);
  
  // power enable
  if ( S1() && S2() ) {
    byte temp = !digitalRead(LED3);
    digitalWrite(LED3, temp);
    while( S1() || S2() ) {}
  } // end if


}

// returns 1 if switched pressed
byte  S1(void)   {
  if (digitalRead(SW1) != 1)   return 1;
  // or use (digitalRead(SW1) == 0)
  // 1 is a HIGH
  else return 0;
}

// returns 1 if switched pressed
byte  S2(void)   {
  if (digitalRead(SW2) != 1)   return 1;
  else return 0;
}