#include <Servo.h> // Servo kütüphanesini ekledik
Servo horizontal; // yatay hareket motoru
int servoh = 90; // yatay limit
Servo vertical; // dikey hareket motoru
int servov = 90; // dikey limit
// LDR pinlerini belirliyoruz
int ldrlt = 0; //LDR sol üst ldr
int ldrrt = 1; //LDR sağ üst ldr
int ldrld = 2; //LDR sol alt ldr
int ldrrd = 3; //LDR sağ alt ldr
void setup()
{
Serial.begin(9600);
// servo connections
// name.attacht(pin);
horizontal.attach(9);
vertical.attach(10);
}
void loop()
{
int lt = analogRead(ldrlt); // üst sol ldr okuma
int rt = analogRead(ldrrt); // üst sağ ldr okuma
int ld = analogRead(ldrld); // alt sol ldr okuma
int rd = analogRead(ldrrd); // alt sağ ldr okuma
int dtime = analogRead(4)/20; // pot ayarları
int tol = analogRead(5)/4;// tolerans belirliyoruz
int avt = (lt + rt) / 2; // üst ldr değerleri ortalaması
int avd = (ld + rd) / 2; // alt ldr değerler ortalaması
int avl = (lt + ld) / 2; // sol ldr değerler ortalaması
int avr = (rt + rd) / 2; // sağ ldr değerler ortalaması
int dvert = avt - avd; // üst ve alt ldr değerleri farkı
int dhoriz = avl - avr;// sol ve sağ ldr değerleri farkı
if (-1*tol > dvert || dvert > tol) // dikey hareket için tolerans değerleri ile karşılaştırma
{
if (avt > avd)//üst tarafa alt taraftan daha fazla ışık geliyorsa
{
servov = ++servov;// yukarı hareket sağla
if (servov > 180)
{
servov = 180;
}
}
else if (avt < avd)//alt tarafa üst taraftan daha fazla ışık geliyorsa
{
servov= --servov;// aşağı hareket sağla
if (servov < 0)
{
servov = 0;
}
}
vertical.write(servov);
}
if (-1*tol > dhoriz || dhoriz > tol) // yatay hareket için tolerans değerleri kontrolü
{
if (avl > avr)//sol tarafta ışık daha fazla ise
{
servoh = --servoh;//sola hareket sağla
if (servoh < 0)
{
servoh = 0;
}
}
else if (avl < avr)// sağ tarafta ışık daha fazla ise
{
servoh = ++servoh;//sağa hareketi sağla
if (servoh > 180)
{
servoh = 180;
}
}
else if (avl == avr)//ışık şiddetli eşit ise sabit kal
{
// nothing
}
horizontal.write(servoh);
}
delay(dtime);
}
0 yorum:
Yorum Gönder