|
When I first bought my RCX some time ago, I dreamed of using the remote control
to drive the train. Well I think I finally have it working. The following
code works but has a problem which perhaps somebody can help me with.
The program looks for input from the message buttons on the infrared remote.
Message 1 decreases speed, Message 2 sets the speed to 0, and Message 3
increases the speeed. On problem I have is that when I give it message 2, the
variable 'speed' goes to zero but the motor doesn't stop. Anyone know what I'm
doing wrong? Anyone have suggestions for refining the code. Perhaps a better
speed control algorithem. Thanks to Dave B(for NCQ) and Mark Overmars (for the
tutorial)
Thanks for any advice, hints, feedback or suggestions
Here is the code: (please excuse me if it is not appropriate to post it here)
int speed , __speed;
task run_motor()
{
while (true)
{
__speed = speed;
if (__speed > 0) {SetPower(OUT_A,speed);OnFwd(OUT_A);}
if (__speed < 0) {SetPower(OUT_A,-speed);OnRev(OUT_A);}
}
}
task check_sensors()
{
while (true)
{
ClearMessage();
until (Message() != 0);
if (Message() == 1) {speed = speed -1;}
if (Message() == 2) {speed = 0;}
if (Message() == 3) {speed = speed +1;}
}
}
task main()
{
speed = 0;
start run_motor;
start check_sensors;
}
|
|
Message has 3 Replies:
84 Messages in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
|