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.
Wie lösche ich die letzte Position?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); } } }
Oder habe ich die völlig falsche Richtung gewählt?
Dankeschön
Achim







Zitieren

Lesezeichen