Drehscheibe Modellbahn mit RF24

So würde es auch funktionieren.

#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

unsigned long aktuelleZeit;
unsigned long vergangeneZeit_A;
unsigned long interval_1 = 2000;
int messungPin1 = HIGH;
int messungPin1Alt = HIGH;
byte encoderWert = 0;                             // -1 ( eins weniger als 0 ) == 255
const byte hal = 3;
const byte encoderPinA = 10;                      // Phase A vom Drehencoder
const byte encoderPinB = 11;                      // Phase B vom Drehencoder
const byte tasterEnter = 12;                      // Pin an dem der Encoder Taster angeschlossen ist
int wertSpeichern = 0;                            // gespeicherter Encoderwert
int encoderGedrueckt = 0;                         // Statusspeicher ob Encodertaster betätigt wurde
int encoderTaster = HIGH;                         // Taster im Encoder
int gleisAlt = 0;                                 // Scheibe Position alt
int gleisNeu = 0;                                 // Position welche die Scheibe anfahren soll
bool enter = false;                               // Bestätigung das der Encoder gedrückt wurde
int schritte = 0;                                 // Schritte die deer Motor (Hallsensor betätigt) zurücklegen muss
int sensor = LOW;
bool start = false;
bool ergebnis = false;

unsigned long encoderDruckzeit;                   // Zeit wann der Encodertaster betätigt wurde
unsigned long entprellZeit = 200;                 // Zeit die nach der betätigung eines Tasters gewartet wird
unsigned long startZeit;                          // Abfrage begin Sensor an Bühne
unsigned long interval = 2000;                    // Zeitabstand nachdem ein Zustand des Sensors erkannt wird
unsigned long vergangeneZeit = 0;                 // Speichervariable um die Vergangene Zeit zu speichern
bool nullStellung = false;                        // Speichervariable ob Referenzfahrt erfolgt ist
int pin_motor_links = A1;                         // Richtungspin an H-Brücke für Links
int pin_motor_rechts = A2;                        // Richtungspin an H-Brücke für Rechts
const byte sensor_referenz = 2;                   // Pin für Sensor Referenz aussen an der Grube (Nullstellung)
int status_sensor_referenz;                       // Speichervariable für Status von Sensor für Referenzfahrt
byte linksRum = 0;                                // Anzahl Schritte Drehrichtung links
byte rechtsRum = 0;                               // Richtungsflag Drehrichtung rechts


void setup() {
  pinMode(sensor_referenz, INPUT);
  pinMode(pin_motor_links, OUTPUT);
  pinMode(pin_motor_rechts, OUTPUT);
  pinMode(encoderPinA, INPUT);
  pinMode(encoderPinB, INPUT);
  pinMode(tasterEnter, INPUT);
  pinMode(hal, INPUT);
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("Drehscheiben-");
  lcd.setCursor(0, 1);
  lcd.print("steuerrung");
  delay (2000);
  //lcd.clear();
  //lcd.begin(16, 2);
  //lcd.setCursor(0, 0);
  //lcd.print("Wert");
  //lcd.setCursor(0, 1);
  //lcd.print(encoderWert);
}


void loop() {
  referenzFahrt();
  encoder_lesen();
  schritt();
  schritteZaehlen();
  //Motor();

}

void referenzFahrt() {
  aktuelleZeit = millis();
  status_sensor_referenz = digitalRead(sensor_referenz);
  if ((nullStellung == false) && (status_sensor_referenz == HIGH)) {

    digitalWrite (pin_motor_rechts, HIGH);
    digitalWrite (pin_motor_links, LOW);
    if (millis() - vergangeneZeit_A >= interval_1) {
      Serial.println("2 Sekunden abgelaufen");
      lcd.clear();
      lcd.begin(16, 2);
      lcd.setCursor(0, 0);
      lcd.print("Referenzfahrt");
      lcd.setCursor(0, 1);
      lcd.print("gestartet");
      vergangeneZeit_A = millis();
    }
  }
  else if ((nullStellung == false) && (status_sensor_referenz == LOW)) {
    Serial.println(nullStellung);
    Serial.println(status_sensor_referenz);
    Serial.println(vergangeneZeit_A);

    nullStellung = true;
    digitalWrite(pin_motor_rechts, LOW);
    digitalWrite(pin_motor_links, LOW);
    lcd.clear();
    lcd.begin(16, 2);
    lcd.setCursor(0, 0);
    lcd.print("Referenzfahrt");
    lcd.setCursor(0, 1);
    lcd.print("beendet");
    delay(2000);
    lcd.clear();
    lcd.begin(16, 2);
    lcd.setCursor(0, 0);
    lcd.print("Wert");
    lcd.setCursor(0, 1);
    lcd.print(encoderWert);
  }

}

void encoder_lesen () {
  messungPin1 = digitalRead(encoderPinA);
  if ((messungPin1 == LOW) && (messungPin1Alt == HIGH) && (nullStellung == true)) {
    if (digitalRead(encoderPinB) == HIGH) {
      if (encoderWert < 48) encoderWert++ ;
    } else {
      if (encoderWert > 1) encoderWert-- ;

    }

    lcd.begin(16, 2);
    lcd.setCursor(0, 0);
    lcd.print("Wert");
    lcd.setCursor(0, 1);
    lcd.print(encoderWert);
  }
  encoderTaster = digitalRead(tasterEnter);
  if (encoderTaster == LOW)
  {
    encoderDruckzeit = millis();
    encoderGedrueckt = 1;
  }
  if ((millis() - encoderDruckzeit > entprellZeit) && encoderGedrueckt == 1) {
    wertSpeichern = encoderWert;
    Serial.println(wertSpeichern);
    encoderGedrueckt = 0;
    enter = true;

  }
  messungPin1Alt = messungPin1;
}

void schritt () {
  if (enter == true) {
    gleisNeu = wertSpeichern;
    schritte = abs (gleisNeu - gleisAlt);
    if (gleisNeu > gleisAlt) {
      Serial.println ("rechts"); 
    }
    else if (gleisNeu < gleisAlt){
      Serial.println ("links");
    }
    Serial.print ("benoetigte Schritte  ");
    Serial.println(schritte);
    Serial.println(gleisNeu);
    Serial.println(gleisAlt);
    Serial.println(enter);
    enter = false;
    ergebnis = true;
  }
}

void schritteZaehlen () {
  sensor = digitalRead (hal);
  startZeit = millis();
  if ((schritte != 0) && (ergebnis == true)) {
    start = true;
    if ((startZeit - vergangeneZeit >= interval) && (sensor == LOW) && (start == true)) {
      vergangeneZeit = startZeit;
      schritte--;
      Serial.println("Schritte");
      Serial.println(schritte);
    }
  }
  else if ((schritte == 0) && (start == true)) {
    start = false;
    Serial.println("Ziel");
    ergebnis = false;
    gleisAlt = wertSpeichern;
  }
}

void best_Richtung() {

}

void motor() {

}

nur wie bekomme ich das hin, das die Scheibe, wenn ich von Gleis 1 auf Gleis 48 fahren möchte, nur 1 Schritt nach links fährt anstatt 48 Schritte nach rechts fährt?