Praćenje putanje izvora svjetlosti koristeći foto otpornike

Tekst koda

// code

#include <Servo.h>
Servo servohori;
int servoh = 0;
int servohLimitHigh = 160;
int servohLimitLow = 20;
Servo servoverti;
int servov =0;
int servovLimitHigh = 160;
int servovLimitLow = 20;
int ldrtopl = A2; //foto otpornik “gore-lijevo”
int ldrtopr = A1; //foto otpornik “gore-desno”
int ldrbotl = A3; // foto otpornik “dolje-lijevo”
int ldrbotr = A0; // foto otpornik “dolje-desno”
void setup () {
servohori.attach(10);
servohori.write(0);
servoverti.attach(9);
servoverti.write(0);
delay(500);
}
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; //srednja vrijednost – gore
int avgbot = (botl + botr) / 2; //srednja vrijednost – dolje
int avgleft = (topl + botl) / 2; //srednja vrijednost – lijevo
int avgright = (topr + botr) / 2; //srednja vrijednost – desno
if (avgtop < avgbot)
{
servoverti.write(servov +1);
if (servov > servovLimitHigh)
{
servov = servovLimitHigh;
}
delay(10);
}
else if (avgbot < avgtop)
{
servoverti.write(servov -1);
if (servov < servovLimitLow)
{
servov = servovLimitLow;
}
delay(10);
}
else
{
servoverti.write(servov);
}
if (avgleft > avgright)
{
servohori.write(servoh +1);
if (servoh > servohLimitHigh)
{
servoh = servohLimitHigh;
}
delay(10);
}
else if (avgright > avgleft)
{
servohori.write(servoh -1);
if (servoh < servohLimitLow)
{
servoh = servohLimitLow;
}
delay(10);
}
else
{
servohori.write(servoh);
}
delay(50);
}

Odgovori

Vaša adresa e-pošte neće biti objavljena. Obavezna polja su označena sa *