Author Topic: Could someone have a look at my code please (C)  (Read 1606 times)

0 Members and 1 Guest are viewing this topic.

Offline KelpyTopic starter

  • Full Member
  • ***
  • Posts: 83
  • Helpful? 0
Could someone have a look at my code please (C)
« 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.

Offline Webbot

  • Expert Roboticist
  • Supreme Robot
  • *****
  • Posts: 2,165
  • Helpful? 111
    • Webbot stuff
Re: Could someone have a look at my code please (C)
« Reply #1 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.
Webbot Home: http://webbot.org.uk/
WebbotLib online docs: http://webbot.org.uk/WebbotLibDocs
If your in the neighbourhood: http://www.hovinghamspa.co.uk

Offline KelpyTopic starter

  • Full Member
  • ***
  • Posts: 83
  • Helpful? 0
Re: Could someone have a look at my code please (C)
« Reply #2 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. ???

 


Get Your Ad Here