#include <LiquidCrystal.h>
#include <Servo.h>
//SETUP
int wartezeit = 300;
int schwellwert = 70;
int Vert_mitte = 90;
int Hori_mitte = 90;
int schrittweitehori = 2;
int calibrate1 = 0;
int calibrate2 = 0;
int calibrate3 = 0;
int horizontalwert=0;
int hori=0;
int vert=0;
int merke=0;
int stufe=0;
int mitte_alt=0;
Servo myservo1; // create servo object to control a servo
Servo myservo2; // create servo object to control a servo
int rssilinks = A2;
int rssimitte = A1;
int rssirechts = A1;
#define SPKR 9
int links = 0;
int mitte = 0;
int rechts = 0;
int i=0;
int y=0;
void setup()
{
myservo1.attach(9); // attaches the servo on pin 10 to the servo object
myservo1.write(Hori_mitte);
myservo2.attach(8); // attaches the servo on pin 11 to the servo object
myservo2.write(Vert_mitte);
y=Hori_mitte;
Serial.begin(9600);
for(i=0;i<10;i++)
{
calibrate1=calibrate1+analogRead(rssilinks);
delay(25);
}
calibrate1=calibrate1/10;
for(i=0;i<10;i++)
{
calibrate2=calibrate2+analogRead(rssimitte);
delay(25);
}
calibrate2=calibrate2/10;
for(i=0;i<10;i++)
{
calibrate3=calibrate3+analogRead(rssirechts);
delay(25);
}
calibrate3=calibrate3/10;
pinMode(SPKR, OUTPUT); //set the speaker as output
digitalWrite(SPKR, HIGH);
delay(500);
digitalWrite(SPKR, LOW);
delay(2500);
}
void loop()
{
// Map values to defined range
//links = map(analogRead(rssilinks), 0, calibrate1, 0, 1000);
//mitte = map(analogRead(rssimitte), 0, calibrate2, 0, 1000);
//rechts = map(analogRead(rssirechts), 0, calibrate3, 0, 1000);
links = analogRead(rssilinks);
mitte = analogRead(rssimitte);
rechts = analogRead(rssirechts);
if(mitte<links or mitte<rechts)
{
if (links > mitte)
{
horizontalwert = horizontalwert + schrittweitehori;
Serial.println("nacch links");
}
if (rechts > mitte)
{
horizontalwert = horizontalwert - schrittweitehori;
Serial.println("nacch rechts");
}
hori = horizontalwert + Hori_mitte;
if (hori>179)
{
horizontalwert=0;
Serial.println("zurück");
}
if (hori<=0)
{
horizontalwert=0;
Serial.println("zurück");
}
myservo1.write(hori);
myservo2.write(Vert_mitte);
delay(wartezeit);
}
else
{
if (mitte > rechts && mitte > links)
{
mitte = map(analogRead(rssimitte), 0, calibrate2, 0, 100);
Serial.println(mitte);
if (mitte < schwellwert)
{
mitte_alt=0;
for(merke=1; merke < 5; merke++)
{
mitte = map(analogRead(rssimitte), 0, calibrate2, 0, 100);
if (mitte_alt > mitte)
{
vert = vert+1;
}
if (mitte_alt < mitte)
{
vert = vert-1;
delay(wartezeit);
}
myservo2.write(Vert_mitte + vert);
delay(wartezeit);
mitte_alt=mitte;
}
}
delay(wartezeit);
}
}
}