Hallo, kann mir einer verraten was ich falsch mache?
Im Prinzip habe ich einen Ein/Aus Schalter und 3 Poti´s, eins für die Geschwindigkeit, und die anderen beiden sind jeweils für den maximal Anschlag links und rechts, dazwischen soll das ganze hin und her pendeln.
#include <Servo.h>
Servo wiperServo;
int pos; int lastPos;
int leftServo; int rightServo;
int servoSpeed = 2;
int startAngle = 70;
const byte interruptPin = 2;
volatile byte flag = LOW;
void setup() {
pinMode(8, OUTPUT); pinMode(9, OUTPUT);
for (int flash = 0; flash < 3; flash++)
{
digitalWrite(8, HIGH); delay(200); digitalWrite(8, LOW); delay(200);
}
wiperServo.attach(10);
attachInterrupt(digitalPinToInterrupt(interruptPin), onOff, FALLING);
rightServo = map(analogRead(A0), 0, 1023, 90, 0);
rightServo = constrain(rightServo, 0, 90);
wiperServo.write(rightServo); delay(2000);
leftServo = map(analogRead(A1), 0, 1023, 90, 180);
leftServo = constrain(leftServo, 90, 180);
wiperServo.write(leftServo); delay(2000);
for (int flash = 0; flash < 3; flash++)
{
digitalWrite(8, HIGH); delay(200); digitalWrite(8, LOW); delay(200);
}
lastPos = leftServo;
}
void loop() {
servoSpeed = map(analogRead(A2), 0, 1023, 0, 20);
servoSpeed = constrain(servoSpeed, 2, 18);
if (analogRead(A1) < 25)
{
leftServo = 90;
digitalWrite(8, HIGH);
delay(25);
}
else
{
leftServo = map(analogRead(A1), 26, 1023, 90 + startAngle, 180);
leftServo = constrain(leftServo, 90, 180);
if (leftServo >= 175) digitalWrite(9, HIGH);
else digitalWrite(9, LOW);
}
if (analogRead(A0) < 25)
{
rightServo = 90;
digitalWrite(8, HIGH);
delay(25);
}
else
{
rightServo = map(analogRead(A0), 26, 1023, 90 - startAngle, 0);
rightServo = constrain(rightServo, 0, 90);
if (rightServo <= 5) digitalWrite(9, HIGH);
else digitalWrite(9, LOW);
}
if (flag)
{
if (lastPos > rightServo)
for (pos = lastPos; pos >= rightServo; pos--)
{
if (!flag) break;
runServo(servoSpeed);
}
if (lastPos < leftServo)
for (pos = lastPos; pos <= leftServo; pos++)
{
if (!flag) break;
runServo(servoSpeed);
}
}
if (!flag)
{
if (lastPos >= 90)
{
wiperServo.write(leftServo);
pos = leftServo;
}
else
{
wiperServo.write(rightServo);
pos = rightServo;
}
}
}