Society of Robots - Robot Forum

Software => Software => Topic started by: Kelpy on November 01, 2010, 08:25:25 AM

Title: Could someone have a look at my code please (C)
Post by: Kelpy on November 01, 2010, 08:25:25 AM
I had never even seen C until about 2 months ago, but I am trying to learn. I have to say, I'm finding it quite difficult and alien.

I have put some LED's on my bot, which I am trying to get to "strobe" similar to the front of Kit in Knight Rider.

This piece of code does work effectively, but it seems to me that there must be a better way of doing it. (Similar to the GOSUB routine in Basic?)

The bits I'm on about refer to the led's.

Code: [Select]
if(lightLeft > lightRight && (lightLeft - lightRight) > threshold)
{
// go left
act_setSpeed(&left_wheel,DRIVE_SPEED_MIN);
act_setSpeed(&right_wheel,DRIVE_SPEED_MAX);

led_put_char(1);

LED_on(&led1);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led2);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led3);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led4);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led1);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led2);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led3);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led4);
delay_cycles(US_TO_CYCLES(50000));

LED_on(&led4);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led3);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led2);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led1);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led4);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led3);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led2);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led1);
delay_cycles(US_TO_CYCLES(50000));

}

else if(lightRight > lightLeft && (lightRight - lightLeft) > threshold)
{
// go right
act_setSpeed(&left_wheel,DRIVE_SPEED_MAX);
act_setSpeed(&right_wheel,DRIVE_SPEED_MIN);

led_put_char(3);

LED_on(&led1);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led2);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led3);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led4);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led1);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led2);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led3);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led4);
delay_cycles(US_TO_CYCLES(50000));

LED_on(&led4);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led3);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led2);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led1);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led4);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led3);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led2);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led1);
delay_cycles(US_TO_CYCLES(50000));

}

else
{
// Go forwards
act_setSpeed(&left_wheel,DRIVE_SPEED_MAX);
act_setSpeed(&right_wheel,DRIVE_SPEED_MAX);

led_put_char(2);

LED_on(&led1);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led2);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led3);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led4);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led1);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led2);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led3);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led4);
delay_cycles(US_TO_CYCLES(50000));

LED_on(&led4);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led3);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led2);
delay_cycles(US_TO_CYCLES(50000));
LED_on(&led1);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led4);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led3);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led2);
delay_cycles(US_TO_CYCLES(50000));
LED_off(&led1);
delay_cycles(US_TO_CYCLES(50000));

}

Any advice would be most welcome.
Title: Re: Could someone have a look at my code please (C)
Post by: Webbot on November 01, 2010, 01:15:39 PM
Looks like you're using WebbotLib.
My advice would to read up in the manual about the scheduler. This will let you have a piece of code that is called every fraction of a second. You can then make it move the LED bar left or right.
Title: Re: Could someone have a look at my code please (C)
Post by: Kelpy on November 01, 2010, 01:41:13 PM
Thanks for that, Webbot. Is there anything you haven't thought of, in your library?

I can't say I understand it or know how to implement it, but I'll try and study it. ???