Danke für den Hinweis für die Ausgabe, habe es geändert!
Die delay(DTIME) habe ich bereits raus genommen, soll durch einen festen Wert angepasst werden!
Habe mal den einen Part reingeschrieben, das die Servos bei einem Wert unter 200 auf Startposition fahren und das Programm ab einen Wert von 300 startet.
Ist das so richtig?
#include <Servo.h> // Servo-Library einbinden
Servo Horizontal; // Horizontale Servo
int Servohorizontal = 15; // Servohorizontal start Position
Servo Vertikal; // Vertikale Servo
int Servovertikal = 15; // Servovertikal start Position
// LDR Stiftverbindungen
// Name = analogpin;
int LDRol = 0; // LDR oben links
int LDRor = 1; // LDR oben rechts
int LDRul = 2; // LDR unten links
int LDRur = 3; // LDR unten rechts
void setup ()
{
Serial.begin (9600);
// Servoanschlüsse
// Name.attacht (Pin);
Horizontal.attach (5);
Vertikal.attach (6);
}
void loop ()
{
int OL = analogRead (LDRol) * 1.0; // oben links, Faktor 1.0 anpassen, wenn die Widerstände sehr unterschiedlich sind
int OR = analogRead (LDRor) * 1.0; // oben rechts, Faktor 1.0 anpassen, wenn die Widerstände sehr unterschiedlich sind
int UL = analogRead (LDRul) * 1.0; // unten links, Faktor 1.0 anpassen, wenn die Widerstände sehr unterschiedlich sind
int UR = analogRead (LDRur) * 1.0; // unten rechts, Faktor 1.0 anpassen, wenn die Widerstände sehr unterschiedlich sind
int TOL = 200; // Wert, ab wann die Position geändert werden soll (Toleranz)
int MWT = (LDRol + LDRor) / 2; // Mittelwert oben
int MWU = (LDRul + LDRur) / 2; // Mittelwert unten
int MWL = (LDRol + LDRul) / 2; // Mittelwert links
int MWR = (LDRor + LDRur) / 2; // Mittelwert rechts
int dvert = MWT - MWU; // Überprüfen der diffirence zwischen oben und unten
int dhoriz = MWL - MWR; // Überprüfen der diffirence zwischen links und rechts
int LDRcheck = (LDRol + LDRor + LDRul + LDRur); // Gesamtwert der 4 LDR
if (LDRcheck < 200)
{
Horizontal.write (15);
Vertikal.write (15);
}
if (LDRcheck > 300)
{
if (-1 * TOL > dvert || dvert > TOL) // Überprüfen, ob die diffirenz in der Toleranz liegt, wenn nicht vertikalen Winkel verändern
{
if (MWT > MWU)
{
Servovertikal = ++ Servovertikal;
if (Servovertikal > 90)
{
Servovertikal = 90;
}
}
else if (MWT < MWU)
{
Servovertikal = --Servovertikal;
if (Servovertikal < 0)
{
Servovertikal = 0;
}
}
Vertikal.write (Servovertikal);
}
delay (200); //Warten bis der Servovertikal in Position ist
if (-1 * TOL > dhoriz || dhoriz > TOL) // Überprüfen, ob die diffirenz in der Toleranz liegt, wenn nicht horizontalen Winkel verändern
{
if (MWL > MWR)
{
Servohorizontal = --Servohorizontal;
if (Servohorizontal < 0)
{
Servohorizontal = 0;
}
}
else if (MWL < MWR)
{
Servohorizontal = ++ Servohorizontal;
if (Servohorizontal > 180)
{
Servohorizontal = 180;
}
}
else if (MWL == MWR)
{
// gar nichts
}
Horizontal.write (Servohorizontal);
}
}
// Die 4 Helligkeitswerte und die Grad Zahl Servomotoren zu Testzwecken an den PC übertragen
Serial.print (" LDRol:"); Serial.println(LDRol); // LDR oben links
Serial.print(" - ");
Serial.print (" LDRor:"); Serial.println(LDRor); // LDR oben rechts
Serial.print(" - ");
Serial.print (" LDRul:"); Serial.println(LDRul); // LDR unten links
Serial.print(" - ");
Serial.print (" LDRur:"); Serial.println(LDRur); // LDR unten rechts
Serial.print(" - ");
Serial.print (" Servo V:"); Serial.print(Servovertikal); // Servo Winkel Vertikal
Serial.print(" - ");
Serial.print (" Servo H:"); Serial.println(Servohorizontal); //Servo Winkel Horizontal
delay (200);
}