SolarX Güneş Takip Sistemi - 2. Nesil (Elektronikli) Robot

Kodla Büyü
Mesajlar
3
SolarX Güneş Takip Sistemi - 2. Nesil (Elektronikli) Robot
Merhaba,Arkadaşlar SolarX Güneş Takip Sistemi - 2. Nesil (Elektronikli) robotu kurdum fakat LDR ‘ler ışığın geliş açısına göre hareket etmiyor,Robot sabit bir yönde hareket edip kalıyor , ışığın yönüne göre LDR ler aracılığla hareket edip ışığı takip etmesi gerekiyor robotun ,yardımcı olabilirseniz sevinirim kodlar ise aşağıda gibi (Multimetre ile LDR ölçtüm ışıklı ortamda 1400-1500 OHM)

Kodlar:
solarx-gunes-takip-sistemi-elektronikli-34544-91-O.jpg
solarx-gunes-takip-sistemi-elektronikli-34544-91-O.jpg
#include <Servo.h>

//defining Servoss


#define TOLERANCE 10

#define STEP_DELAY 7

Servo servohori;

int servoh = 0;

int servohLimitHigh = 180;

int servohLimitLow = 65;


Servo servoverti;

int servov = 0;

int servovLimitHigh = 180;

int servovLimitLow = 65;

//Assigning LDRs

int ldrtopl = A0; //top left LDR green

int ldrtopr = A3; //top right LDR yellow

int ldrbotl = A1; // bottom left LDR blue

int ldrbotr = A2; // bottom right LDR orange


void setup ()

{

servohori.attach(10);

servohori.write(180);

servoverti.attach(9);

servoverti.write(180);

Serial.begin(9600);

delay(3000);

}


void loop()

{

servoh = servohori.read();

servov = servoverti.read();

//capturing analog values of each LDR

int topl = analogRead(ldrtopl);

int topr = analogRead(ldrtopr);

int botl = analogRead(ldrbotl);

int botr = analogRead(ldrbotr);

// calculating average

int avgtop = (topl + topr) / 2; //average of top LDRs

int avgbot = (botl + botr) / 2; //average of bottom LDRs

int avgleft = (topl + botl) / 2; //average of left LDRs

int avgright = (topr + botr) / 2; //average of right LDRs

Serial.println(avgtop);


if (TOLERANCE < avgbot - avgtop)

{

servoverti.write(servov + 1);

if (servov > servovLimitHigh)

{

servov = servovLimitHigh;

}

delay(STEP_DELAY);

}


else if (TOLERANCE < avgtop - avgbot)

{

servoverti.write(servov - 1);

if (servov < servovLimitLow)

{

servov = servovLimitLow;

}

delay(STEP_DELAY);

}


else

{

servoverti.write(servov);

}


if (avgleft - avgright > TOLERANCE)

{

servohori.write(servoh + 1);


if (servoh > servohLimitHigh)

{

servoh = servohLimitHigh;

}

delay(STEP_DELAY);

}


else if (avgright - avgleft > TOLERANCE)

{

servohori.write(servoh - 1);


if (servoh < servohLimitLow)

{

servoh = servohLimitLow;

}

delay(STEP_DELAY);

}


else

{

servohori.write(servoh);

}

delay(STEP_DELAY);

}
 
Geri
Üst