Hallo,
aus einer while Schleife komme ich zwar herraus, aber bei einem Neustart ist immer noch die letzte Position drin.
Ein Servo wird über einen Rauftaster von 0-100° und von einem Runtertaster von 100-0° mit beliebigem Stop und Wechsel gesteuert. Das geht. Wenn ich einen 3. Taster drücke(Bremstaster) dann wird alles abgebrochen und das Servo fährt schnell auf Null. Wenn ich jetzt aber wieder die Rauftaste drücke, fängt das Servo nicht bei 0° an, sondern an der Position an der ich unterbrach. Mit "break" ist der Effekt der gleiche.
Code:
#include<Servo.h>
int pos = 0;
const int Bremstaster = 8;
Servo servo;
void setup() {
 
  pinMode(6, INPUT);//Rauftaster
  pinMode(7, INPUT);//Runtertaster
  pinMode(Bremstaster, INPUT);//Bremstaster
  servo.attach(9);
}
void loop() {
  int val = digitalRead( Bremstaster);

  if (val == HIGH)

  {
    servo.write(0);//Null Position
    delay(200);

  }
  else
  {

    while (digitalRead(6) == HIGH && pos < 100)
    {
      pos++;
      servo.write(pos);//Bei Tasterdruck Schritt um Schritt hoch
      delay(150);
    }
    while (digitalRead(7) == HIGH && pos > 0)
    {
      pos--;
      servo.write(pos);//Bei Tasterdruck Schritt um Schritt runter
      delay(150);

    }
  }
}
Wie lösche ich die letzte Position?
Oder habe ich die völlig falsche Richtung gewählt?

Dankeschön
Achim