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);
}
}