Inkrementalgeber

Hallo, Kann mir vielleicht jemand helfen mit Inkrementalgeber? Zähler bei rückwärts Rotation zählt , aber startet z.b stand -45 und mit hochzählen fangt bei 45. danke

#include <Servo.h>

Servo servo_X;

String readString;
int n;                  

int x;
int x_r;
int x_l;


#define X_counter_pin 2
bool item_detected = false;
int  X_counter =0;

void setup()
{
 Serial.begin(9600);
 servo_X.attach(9);  
 Serial.println("Servo bereit");
 Serial.println();

 pinMode( X_counter_pin , INPUT);
// delay(3000);
}


void loop()
//_____________Zähler_______________________________
{
 int val = digitalRead( X_counter_pin );
 if( (item_detected == false) && ( val == 0 ))
 {
       item_detected = true;
       X_counter=x ; 
       x_r++;   
       x_l--;   
       updateCounter();
 }
  
 else if( (item_detected == true) && ( val == 1 ))
 {
           item_detected = false;     
 } 

 if ( (n>53)&&(n<82)   == (x=x_l) )  ;    // Links Drehen   serial write 53 schnell, 82 langsam
 if ( (n>100)&&(n<131) == (x=x_r) )  ;    // Rechts Drehen  serial write 100 schnell, 130 langsam
                                          // Stop    serial write 90 

 delay(10);

//__________________360°__Servo Steuerung___________________________________
while (Serial.available())
 {
   char c = Serial.read();                  //gets one byte from serial buffer
   readString += c;                         //makes the string readString
   delay(2);       
 }
 if (readString.length() >0)
 {
                                            // attach or detach servo if desired
   if (readString == "d")
 {
     while (digitalRead(9))                 //delay loop until pin 7 is low
 {
 }              
     servo_X.detach();                      //detach servo
     goto bailout;                          //jump over writing to servo
 }
   if (readString == "a")
 {
     servo_X.attach(9);                     //reattach servo to pin 7
      goto bailout;
 }   
   n = readString.toInt();                  //convert readString into a number
   if(n >= 500)
 {  servo_X.writeMicroseconds(n);  
 }
   else
 {
     servo_X.write(n);  
 }
bailout:                                     //reenter code loop
   Serial.println(servo_X.read());
   readString="";                           
 }
//_______________________________________________________
}

void updateCounter()
{
    Serial.print("  Steps              ");
    Serial.print(X_counter);
    Serial.println();
}

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
So ist er auch auf portablen Geräten lesbar. Das kannst Du auch noch nachträglich ändern.

Wo soll Dein incrementalgeber angeschlossen sein? Kommentare helfen beim Verständnis.

Gruß Tommy

Es ist ein IR sensor mit lochscheibe und 360° Servo. CNC Antrieb.

Ok, Missverständnis. Wo fragst Du den im Sketch ab?

Gruß Tommy

Weiter in 360° Servo IR Zähler Ab und Auf - Deutsch - Arduino Forum