garage opener single wire with multiple outputs

So I cleaned it up a bit from whatever it is I had before (partial messed up reference code I kept to copy from) now i just want to know how to have the open and close function alternate. After it digitalWrites to the open and finishes, how do I set it up to run the close the next time digitalRead = HIGH?
Also I'm using an Uno R3.

void setup(){
int SAO = 0;
int SAT = 1;
int TXO = 2;
int TXT = 3;
int SAOO = 4; 
int SAOC = 5;
int SATO = 6;
int SATC = 7;
int TXOO = 8;
int TXOC = 9;
int TXTO = 10;
int TXTC = 11;

 pinMode (SAO, INPUT);
 pinMode (SAT, INPUT);
 pinMode (TXO, INPUT);
 pinMode (TXT, INPUT);
 pinMode (SAOO, OUTPUT);
 pinMode (SAOC, OUTPUT);
 pinMode (SATO, OUTPUT);
 pinMode (SATC, OUTPUT);
 pinMode (TXOO, OUTPUT);
 pinMode (TXOC, OUTPUT);
 pinMode (TXTO, OUTPUT);
 pinMode (TXTC, OUTPUT);
}
void loop(){
char r1 = digitalRead (0);
 char r2 = digitalRead (1);
 char r3 = digitalRead (2);
 char r4 = digitalRead (3);

  
if (char r1 = HIGH);{
 digitalWrite (4,HIGH);
}

if (char r2 = HIGH);{
  digitalWrite (6,HIGH);
}

 if (char r3 = HIGH);{
  digitalWrite(8,HIGH);
}

 if (char r4 = HIGH);{
  digitalWrite(10,HIGH);
  }
 }