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.
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.