Toma de datos

hola a todos, estoy buscando la forma de tomar dos señales digitales por medio de encoders hasta el momento he sacado 2 codigos pero no se como puedo hacer que en un solo codigo me lea las dos señales digitales a la vez, gracias.

..........................
Encoder 1
..........................

int long encoder0PinA = 3;  
int long encoder0PinB = 5;  
float encoder0Pos = 0;
float encoder0PinALast = LOW;
int n = LOW;
int vueltas=0;
float grados=0;

void setup() { 
  pinMode (encoder0PinA,INPUT);
  pinMode (encoder0PinB,INPUT);
  Serial.begin (500000);
} 

void loop() { 
  n = digitalRead(encoder0PinA);
  if ((encoder0PinALast == LOW) && (n == HIGH)) {
    if (digitalRead(encoder0PinB) == LOW) {
    encoder0Pos--;
    grados = ((360*encoder0Pos)/2500);
    } 
    else {
     encoder0Pos++;
     grados = ((360*encoder0Pos)/2500);
    }
   Serial.print ("GRADOS = ");
   Serial.println (grados);
  } 
  encoder0PinALast = n;
}

...................................
Encoder 2
...................................

int long   encoder0PinA2 = 9 ;  
int long encoder0PinB2 = 11;  
float encoder0Pos2 = 0;
float encoder0PinA2Last = LOW;
int long n = LOW;
int vueltas=0;
float grados=0;

void setup() {  
  pinMode (encoder0PinA2,INPUT);
  pinMode (encoder0PinB2,INPUT);           
  Serial.begin (9600);
} 

void loop() { 
  n = digitalRead(encoder0PinA2);
  
  if ((encoder0PinA2Last == LOW) && (n == HIGH)) {
    if (digitalRead(encoder0PinB2) == LOW) {
      encoder0Pos2 ++;
      grados = ((5.3*encoder0Pos2)/60);
       
         } 
    else {
     encoder0Pos2 ++;
     grados = ((5.3*encoder0Pos2)/60);
    }
   Serial.print ("Grado = ");
   Serial.println (grados);
  } 
  encoder0PinA2Last = n;
}

.........................................

Y el código unificado?

no se como puedo hacer que en un solo codigo me lea las dos señales digitales a la vez?

y las seÑales digitales son?