Servo nur in einem definierten Bereich bewegen

Hallo ich versuche einen 270° Servo durch drücken von Tastern in 30° Schritten nur in einem bestimmten Bereich drehen zu lassen und beim drücken beider Taster wieder auf 90° zu stellen.
Allerdings wird der definierte Bereich von 0° bis 180° einfach ignoriert.

#include <Servo.h>

Servo myServo6;

int pos; // aktuelle Position
int i; // Schrittwinkel
int d; // Verzögerung
int buttonApin = 9;
int buttonBpin = 8;

void setup() {
Serial.begin(9600);
myServo6.attach(6);
pos = 90;
i = 30;
d = 300;
myServo6.write(pos);

pinMode(buttonApin, INPUT_PULLUP);
pinMode(buttonBpin, INPUT_PULLUP);

}

void loop()
{

if (pos > 0 && pos < 180); // !!! funktioniert nicht!!! pos nur erhöhen, wenn die Winkelposition zwischen 0° und 180° ist
{
if (digitalRead(buttonApin) == LOW)
{
pos = pos + i;
myServo6.write(pos);
Serial.print("A");
Serial.println(pos);
delay(d);
}
if (digitalRead(buttonBpin) == LOW)
{
pos = pos - i;
myServo6.write(pos);
Serial.print("B");
Serial.println(pos);
delay(d);
}
}
if (pos < 0 && pos < 180); // !!! funktioniert nicht!!! pos nur erhöhen, wenn die Winkelposition zwischen 0° und 180° ist
{
if (digitalRead(buttonApin) == LOW)
{

myServo6.write(pos);
Serial.print("A");
Serial.println(pos);
delay(d);
}
if (digitalRead(buttonBpin) == LOW)
{

myServo6.write(pos);
Serial.print("B");
Serial.println(pos);
delay(d);
}
}

else if ((digitalRead(buttonApin) && digitalRead(buttonBpin)) == LOW) { // !!!funktioniert nicht einwandfrei!!! Beim Drücken des Tasters "A" und "B" soll immer 90° angefahren werden
pos = 90;
myServo6.write(pos);
Serial.print("A & B");
Serial.println(pos);
delay(d);
}

}

Wie hast Du die Tasten entprellt?

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.

Gruß Tommy

Hallo,

Du willst doch mit jedem Tastendruck 30grad weiterfahren , dann musst du mit einer Flanke des Taster fahren. Du machst das abhängig vom gedrückten Taster damit fährt der Servo immer gleich auf 180 oder auf 0.

Beide Taster gleichzeitig wie soll das gehen. Wenn Du beide drückst wird erst mal einer etwas früher sein und damit wird die zugehörige Funktion ausgeführt. Jetzt kannst Du eigendlich nur irgendwo ein delay einbauen um das irgendwie zu umgehen.

Das wäre also der erste Schritt Taster richtig erkennen und z.B jeweils nur einmal ein Serial.print() machen.

Heinz

Sorry habe das Thema leider doppelt gepostet.
@MicroBahner: Danke

Wenn es hier nicht weitergehen soll, dann viel Erfolg woanders.