@@ -21,6 +21,7 @@ int rotS = 0;
int rotD = 0;
int cmpr = 0;
int mtrC;
int scaledown = 0;

//basic defining
int firno = 0;
@@ -53,6 +54,8 @@ int balldist;

//scoring
int direction;
int curve;
int curvelvl;

//AOG values
int dist;
@@ -120,7 +123,7 @@ int main(void)
nus[2] = GetAdUltrasound( _ADULTRASOUND_lus_)/10;
nus[3] = GetAdUltrasound( _ADULTRASOUND_rus_)/10;

usc = 15;
usc = 30;
for (int i = 0;i < 4;i++)
{
usd = nus[i] - us[i];
@@ -209,158 +212,153 @@ int main(void)
SetLCD3Char(60,4,apno);
SetLCD3Char(60,6,birno);

if ( us[1]>30&&us[2]>30&&us[3]>30 )
if ( firval > 10||birval>10 )
{
if ( firval > 10||birval>10 )
if ( firval > birval )
{
if ( firval > birval )
{
if (ballpos > 300&&ballpos>330) {
if(us[2]>us[3]) {
if (ballpos < 130) {
traM((ballpos+5*us[1]/150)%360,75,0);
}
else {
traM((ballpos%360),75,0);
}
}
else if (us[3] > us[2]) {
traM(220,50,0);
}
}
else if (ballpos > 300&&ballpos<330) {
if(us[2]>us[3]) {
if (ballpos < 130) {
traM(((ballpos-5*us[1]/150)%360),75,0);
}
else {
traM(ballpos%360,75,0);
}
}
else if (us[3] > us[2]) {
traM(220,50,0);
}
}
else if (ballpos < 60&&ballpos<30) {
if(us[2]>us[3]) {
traM(100,50,0);
}
else if (us[3] > us[2]) {
if (ballpos < 130) {
traM((ballpos-5*us[1]/150)%360,75,0);
}
else {
traM((ballpos%360),75,0);
}
}
}
else if (ballpos < 60&&ballpos>30) {
if(us[2]>us[3]) {
traM(100,50,0);
}
else if (us[3] > us[2]) {
if (ballpos < 130) {
traM((ballpos+5*us[1]/150)%360,75,0);
}
else {
traM((ballpos%360),75,0);
}
}
}
if (us[2] > us[3]) {
curvelvl = us[2]/us[3]/4.5;
}
else
{
//AOG
dist = 80;

if (ballpos > 180)
{
traD = 160 - balldist + dist;
}
else
{
traD = 200 + balldist - dist;
}

traM(traD,50,0);
else {
curvelvl = us[3]/us[2]/4.5;
}
}
else
{
valdiff = us[2] - us[3];
if (valdiff < 0) valdiff *= -1;
if (valdiff > 100) valdiff = 100;

if (cmpr < 357||cmpr > 3)
{
traM(0,100,0);
if (us[1] != 409) {
curve = 2*curvelvl*us[1]/100;
}
else {
curve = 2*curvelvl;
}

if (valdiff > 19)
{
if (us[3] < us[2])
{
if (us[1]>33)
{
traM(225,valdiff/2,0);
if (ballpos > 300&&ballpos>330) {
if(us[2]>us[3]) {
if (ballpos < 130) {
traM((ballpos+curve)%360,70,0);
}
else if (us[1]<27)
{
traM(315,valdiff/2,0);
else {
traM((ballpos%360),70,0);
}
}
else if (us[3] > us[2]) {
traM(220,50,0);
}
}
else if (ballpos > 300&&ballpos<330) {
if(us[2]>us[3]) {
if (ballpos < 130) {
traM(((ballpos+curve)%360),70,0);
}
else if (27<us[1]<33)
{
traM(270,valdiff/2,0);
else {
traM(ballpos%360,70,0);
}
}
else if (us[2] < us[3])
{
if (us[1]>33)
{
traM(135,valdiff/2,0);
else if (us[3] > us[2]) {
traM(220,50,0);
}
}
else if (ballpos < 60&&ballpos<30) {
if(us[2]>us[3]) {
traM(100,50,0);
}
else if (us[3] > us[2]) {
if (ballpos < 130) {
traM((ballpos-curve)%360,70,0);
}
else {
traM((ballpos%360),70,0);
}
else if (us[1]<27)
{
traM(45,valdiff/2,0);
}
}
else if (ballpos < 60&&ballpos>30) {
if(us[2]>us[3]) {
traM(100,50,0);
}
else if (us[3] > us[2]) {
if (ballpos < 130) {
traM((ballpos-curve)%360,70,0);
}
else if (27<us[1]<33)
{
traM(90,valdiff/2,0);
else {
traM((ballpos%360),70,0);
}
}
}
}
else
{
//AOG
dist = 80;

if (ballpos > 180)
{
traD = 160 - balldist + dist;
}
else
{
if (us[1] > 33)
{
traM(180,(us[1]-33)/2,0);
}
else if (us[1] < 27)
{
traM(0,(27-us[1])*2,0);
}
else if (us[1] > 27||us[1] < 33)
{
traM(0,0,0);
}
traD = 200 + balldist - dist;
}

traM(traD,50,0);
}
}
else
{
if (us[1]<40)
valdiff = us[2] - us[3];
if (valdiff < 0) valdiff *= -1;
if (valdiff > 100) valdiff = 100;

if (cmpr < 357||cmpr > 3)
{
traM(bcv[1],(50-us[1]),0);
traM(0,100,0);
}
else if (us[2]<40)

if (valdiff > 19)
{
traM(bcv[2],(50-us[2]),0);
if (us[3] < us[2])
{
if (us[1]>33)
{
traM(225,valdiff/2,0);
}
else if (us[1]<27)
{
traM(315,valdiff/2,0);
}
else if (27<us[1]<33)
{
traM(270,valdiff/2,0);
}
}
else if (us[2] < us[3])
{
if (us[1]>33)
{
traM(135,valdiff/2,0);
}
else if (us[1]<27)
{
traM(45,valdiff/2,0);
}
else if (27<us[1]<33)
{
traM(90,valdiff/2,0);
}
}
}
else if (us[3]<40)
else
{
traM(bcv[3],(50-us[3]),0);
if (us[1] > 33)
{
traM(180,(us[1]-33)/2,0);
}
else if (us[1] < 27)
{
traM(0,(27-us[1])*2,0);
}
else if (us[1] > 27||us[1] < 33)
{
traM(0,0,0);
}
}

}
}
while(1);
Binary file not shown.
Binary file not shown.
@@ -225,175 +225,164 @@ int main(void)
SetLCD3Char(60,40,apno,YELLOW,BLACK);
SetLCD3Char(60,60,birno,YELLOW,BLACK);

if ( us[1]>30&&us[2]>30&&us[3]>30 )
if ( firval > 10||birval>10 )
{
if ( firval > 10||birval>10 )
if ( firval > birval )
{
if ( firval > birval )
{
if (ballpos <=270&&ballpos>=90) {
traM(180,30,0);
}
else if (balldist < 30) {
valdiff = us[2] - us[3];
if (valdiff < 0) valdiff *= -1;
if (valdiff > 100) valdiff = 100;
if (valdiff > 19)
{
if (us[3] < us[2])
{
if (us[1]>10)
{
traM(225,valdiff/2,0);
}
else if (us[1]<5)
{
traM(315,valdiff/2,0);
}
else if (5<us[1]&&us[1]<10)
{
traM(270,valdiff/2,0);
}
}
else if (us[2] < us[3])
{
if (us[1]>10)
{
traM(135,valdiff/2,0);
}
else if (us[1]<5)
{
traM(45,valdiff/2,0);
}
else if (5<us[1]&&us[1]<10)
{
traM(90,valdiff/2,0);
}
}
}
else
{
if (us[1] > 10)
{
traM(180,(us[1]-15)/2,0);
}
else if (us[1] < 5)
{
traM(0,(10-us[1])*2,0);
}
else if (us[1] > 5||us[1] < 10)
{
traM(0,0,0);
}
}

}
else if (balldist > 30&&balldist < 130) {
if (ballpos <355&&ballpos>5) {
if (ballpos > 180) {
traM(270,(359-ballpos)*2,0);
}
else {
traM(90,ballpos*2,0);
}
}
}
else if (balldist >= 130) {
traM(ballpos,40,0);
}

}
else
{
//AOG
if (ballpos > 180)
{
traD = 180 - balldist + 20;
}
else
{
traD = 180 + balldist - 20;
}

traM(traD,60,0);
}
}
else
{
valdiff = us[2] - us[3];
if (valdiff < 0) valdiff *= -1;
if (valdiff > 100) valdiff = 100;
/*
if (cmpr < 357||cmpr > 3)
{
traM(0,100,0);
if (ballpos <=270&&ballpos>=90) {
traM(180,30,0);
}
*/
if (valdiff > 19)
{
if (us[3] < us[2])
else if (balldist < 30) {
valdiff = us[2] - us[3];
if (valdiff < 0) valdiff *= -1;
if (valdiff > 100) valdiff = 100;
if (valdiff > 19)
{
if (us[1]>30)
{
traM(225,valdiff/2,0);
}
else if (us[1]<27)
if (us[3] < us[2])
{
traM(315,valdiff/2,0);
if (us[1]>10)
{
traM(225,valdiff/2,0);
}
else if (us[1]<5)
{
traM(315,valdiff/2,0);
}
else if (5<us[1]&&us[1]<10)
{
traM(270,valdiff/2,0);
}
}
else if (27<us[1]&&us[1]<33)
else if (us[2] < us[3])
{
traM(270,valdiff/2,0);
if (us[1]>10)
{
traM(135,valdiff/2,0);
}
else if (us[1]<5)
{
traM(45,valdiff/2,0);
}
else if (2<us[1]&&us[1]<10)
{
traM(90,valdiff/2,0);
}
}
}
else if (us[2] < us[3])
else
{
if (us[1]>33)
if (us[1] > 5)
{
traM(135,valdiff/2,0);
traM(180,(us[1]-15)/2,0);
}
else if (us[1]<27)
else if (us[1] < 2)
{
traM(45,valdiff/2,0);
traM(0,(10-us[1])*2,0);
}
else if (27<us[1]&&us[1]<33)
else if (us[1] > 2||us[1] < 5)
{
traM(90,valdiff/2,0);
traM(0,0,0);
}
}

}
else
{
if (us[1] > 33)
{
traM(180,(us[1]-33)/2,0);
else if (balldist > 30&&balldist < 135) {
if (us[2] > 30 && us[3] > 30) {
if (ballpos > 180) {
traM(270,(359-ballpos)*1.4,0);
}
else {

traM(90,ballpos*1.4,0);
}
}
else if (us[1] < 27)
{
traM(0,(27-us[1])*2,0);
else if (us[2] < 30) {
traM(90,30,0);
}
else if (us[1] > 27||us[1] < 33)
{
traM(0,0,0);
else if (us[3] < 30) {
traM(270,30,0);
}
}
else if (balldist >= 135) {
traM(ballpos,40,0);
}

}
else
{
//AOG
if (ballpos > 180)
{
traD = 180 - balldist + 20;
}
else
{
traD = 180 + balldist - 20;
}

traM(traD,60,0);
}
}
else
{
if (us[1]<40)
valdiff = us[2] - us[3];
if (valdiff < 0) valdiff *= -1;
if (valdiff > 100) valdiff = 100;
/*
if (cmpr < 357||cmpr > 3)
{
traM(bcv[1],(50-us[1]),0);
traM(0,100,0);
}
else if (us[2]<40)
*/
if (valdiff > 19)
{
traM(bcv[2],(50-us[2]),0);
if (us[3] < us[2])
{
if (us[1]>30)
{
traM(225,valdiff/2,0);
}
else if (us[1]<27)
{
traM(315,valdiff/2,0);
}
else if (27<us[1]&&us[1]<33)
{
traM(270,valdiff/2,0);
}
}
else if (us[2] < us[3])
{
if (us[1]>33)
{
traM(135,valdiff/2,0);
}
else if (us[1]<27)
{
traM(45,valdiff/2,0);
}
else if (27<us[1]&&us[1]<33)
{
traM(90,valdiff/2,0);
}
}
}
else if (us[3]<40)
else
{
traM(bcv[3],(50-us[3]),0);
if (us[1] > 33)
{
traM(180,(us[1]-33)/2,0);
}
else if (us[1] < 27)
{
traM(0,(27-us[1])*2,0);
}
else if (us[1] > 27||us[1] < 33)
{
traM(0,0,0);
}
}

}
}
while(1);
Binary file not shown.