Reemplazar Infrarrojo por LDR

Hola buenas,

Favor si me pueden ayudar, tengo este programa, que es para controlar un ascensor, la instruccion de a que piso ir se entrega a traves de bluetooth.

unos de los materiales era usar un infrarrojo para detectar en que piso estaba el ascensor… algo que no he podido conseguir.
actualmente tengo LDR he probado algunos tutos y funciona pero usan las entradas analogicas la cual las tengo ocupadas con un 74ls47

Los sensores van en las entradas digitales 8, 9, 10, 11, 12.
como puedo usar esas mismas entradas pero con el LDR, si alguien me peude orientar

#include <SoftwareSerial.h>
#include <Stepper.h>
#define STEPS 10

//Sensores
int sensor1 = 8;
int sensor2 = 9;
int sensor3 = 10;
int sensor4 = 11;
int sensor5 = 12;
int sensor;
//Variables para la lectura de sensores.
int a;
int b;
int c;
int d;
int e;
int piso = 0;
//Variables display entradas analogas
int A=A5;
int B=A4;
int C=A3;
int D=A2;

int parar = 2;
int pisoactual;
int pisodestino = 10;//Se inicializa en 10 para que no pierda sus datos y los continue leyendo.
int temporal = 0;
int control = 0;
int manual = 0;



Stepper stepper(STEPS, 2, 3, 4, 5);//pines ocupados por motor paso a paso

void setup()
{
  stepper.setSpeed(2000);//Velocidad motor paso a paso

  Serial.begin(9600);//Puerto serial

  pinMode(sensor1, INPUT);
  pinMode(sensor2, INPUT);
  pinMode(sensor3, INPUT);
  pinMode(sensor4, INPUT);
  pinMode(sensor5, INPUT);
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(C, OUTPUT);
  pinMode(D, OUTPUT);
  pinMode(13, OUTPUT);
}



void loop()
{
    if(Serial.available()>0)
    {
      temporal=Serial.read();
      pisodestino = temporal;
      piso = sensores();
    }

  if(pisodestino < 6)//lee los 5 valores del puerto serial, si es menor a 5 se cumple.
  {
    piso = sensores();
     
    while (piso > pisodestino)     //BAJADA
    {
      display1(piso);//Se determina por el sensor que lee el alto.
      mover(5);//mueve negativamente entonces bajará el ascensor.
      piso=sensores();
      //Se genera esta condición por que los valores de piso returnan a 0 entonces se tiende a bajar sin tener en cuenta sensores, cuando se iguala a 0 se cumple que piso es 6 y sale de la condición.
      if(piso==0)
      {
      piso=6;
      }
    }
    
    if(piso<pisodestino)    //SUBIDA
      {
        display1(piso);
        mover(1);//sube
      }
  
   if (piso == pisodestino)//LLEGADA
    {
      display1(piso);
      stepper.step(0);
      pisodestino = 10;
    }
   }//cierra piso<6
}//cierra loop

    //DIPLAY CONFIGURACIÓN
    void display1(int pisos)
    {
    if(pisos==1)
    {
    analogWrite(A,1000);
    analogWrite(B,0);
    analogWrite(C,0);
    analogWrite(D,0);
    }
    if(pisos==2)
    {
    analogWrite(A,0);
    analogWrite(B,1000);
    analogWrite(C,0);
    analogWrite(D,0);
    }
    if(pisos==3)
    {
    analogWrite(A,1000);
    analogWrite(B,1000);
    analogWrite(C,0);
    analogWrite(D,0);
    }
    if(pisos==4)
    {
    analogWrite(A,0);
    analogWrite(B,0);
    analogWrite(C,1000);
    analogWrite(D,0);
    }
    if(pisos==5)
    {
    analogWrite(A,1000);
    analogWrite(B,20);
    analogWrite(C,1000);
    analogWrite(D,20);
    }    
}


int sensores()//LECTURA DE SENSORES INFRARROJO
{
  int pisoactual = 0;

  a = digitalRead(8);
  b = digitalRead(9);
  c = digitalRead(10);
  d = digitalRead(11);
  e = digitalRead(12);

  if (a == 1)
  {
    pisoactual = 1; 
  }


  if (b == 1)
  {
    pisoactual = 2;
  }


  if (c == 1)
  {
    pisoactual = 3;
  }

  if (d == 1)
  {
    pisoactual = 4;
  }

  if (e == 1)
  {
    pisoactual = 5;
    
  }

  return pisoactual;

}

void mover(int direccion)//MOVER ARRIBA O ABAJO
{
  if (direccion==1)
  {
    stepper.step(100);
  }

  if (direccion==5)
  {
    stepper.step(-100);
  }
}