Werte vom Distanzsensor werden verfälscht

Hallo, bin neu hier im Forum und habe folgendes Problem mit meinem ersten Arduino Projekt.
Ich will mit einem Arduino UNO R3 einen Schrittmotor Steuerung und Gleichzeitig deine Distanzmessung durchführen.
Die Grafische Oberfläche für die Steuerung für den Motor habe ich mit Processing gebaut. Das klappt auch soweit ganz gut.

Jetzt das Problem: wenn ich den Distanzsensor auslese und mir die Wert einfach (mit einem separaten Sketch) im Monitor anzeigen lasse funktioniert es einwandfrei. Wenn allerdings die Distanzmessung genau so in dem Sketch wo auch der Motor gesteuert wird eingebunden ist bekomme ich nur werde rund um 20 vom Sensor. Diese ändern sich nicht egal bei welcher Distanz.

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//MANUELLE EINGABEN !!!!!!!!!!

double drehzahl = 120.0; // Einagbe der Drehzahl in Umdrehungen/min (Max 300, Min 1)

double schritte = 1600.0; //Einstellung welche beim Step Driver gewählt wurde (Microstepping)

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

// Definition der Variablen
double eingabe = 60000000/(2drehzahlschritte);
double zeit = 80; //Variable definieren
int PUL1 = 7; //PUL1 Pin definieren
int DIR1 = 6; //DIR1 Pin definieren
int ENA1 = 5; //ENA1 Pin definieren
int DIST;
int richtung = 0;
int onoroff = 0;
#define sharp A0 //DIS Pin definieren

//Setup wird beim Start des Progammes einmal ausgeführt
void setup() {
Serial.begin (9600);
pinMode (A0, OUTPUT); //DIS Pin als Ausgang einstellen
pinMode (PUL1, OUTPUT); //PUL1 Pin als Ausgang einstellen
pinMode (DIR1, OUTPUT); //DIR1 Pin als Ausgang einstellen
pinMode (ENA1, OUTPUT); //ENA1 Pin als Ausgang einstellen
digitalWrite(ENA1, LOW);

}

void loop() {
steuerung(), motor(), distance();
}

//Arduino GUI über Processing 3.5.4
void steuerung() {
if(Serial.available()) {
char Status = Serial.read();

if(Status == 'h') {
digitalWrite(ENA1, HIGH); // Motor einschalten
}
if(Status == 'l') {
digitalWrite(ENA1, LOW); // Motor aus
}
if(Status == 'p') {
drehzahl = drehzahl + 10;

}
if(Status == 'm') {
drehzahl = drehzahl - 10;

}
if(Status == 'a') {
drehzahl = drehzahl + 1;
}
if(Status == 'b') {
drehzahl = drehzahl - 1;
}

//Drehrichtung ändern
if(Status == 'o') {
richtung = digitalRead(DIR1);
onoroff = digitalRead(ENA1);
if(richtung == LOW && onoroff == LOW ){
digitalWrite(DIR1, HIGH);
}
if(richtung == HIGH && onoroff == LOW ){
digitalWrite(DIR1, LOW);
}
}
}

}

//Loop wird im Betrieb immer wiederholt
void motor() {
eingabe = 60000000/(2drehzahlschritte);
digitalWrite(PUL1, HIGH);
delayMicroseconds(eingabe);
digitalWrite(PUL1, LOW);
delayMicroseconds(eingabe);
}

void distance(){
DIST = analogRead(sharp);
Serial.println(DIST); //Ausgabe des Distanzwertes
delay(100);
}

Danke schonmal für Eure Hilfe