Troubleshooting Define Commands in C for Robot Motor Control

  • Thread starter Thread starter Lancelot59
  • Start date Start date
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
5 replies · 2K views
Lancelot59
Messages
640
Reaction score
1
This is once again for my robot. My current issue is with a define command:

I have the following function defined in motor_control.c:

Code:
//*****************************************************************************
//Motor Control Functions
//*****************************************************************************
void forward(void)			//Go striaght forward
{
	motorR(THROTTLE,TRIM);
	motorL(THROTTLE,TRIM);
}
The throttle value controls speed, trim offsets the speed variable. Although it probably will be eliminated.

Anyhow, I have throttle defined in a header called system_config.h:

Code:
#define THROTTLE = fast 	//Default forward throttle value to use

The value for "fast" has been enumerated in the header for motor_control.c

I have included the system_config.h file in the motor_control.c library, so what can't I see it? As far as I'm aware it should be able to see that defined value.
 
Physics news on Phys.org
D H said:
Get rid of the equals sign.

#define THROTTLE fast

...That was a silly mistake. Thanks for the catch.

The only error message I got was a syntax error when the compiler got to the first function that tried to pass THROTTLE to a function. It didn't say anything else.

Thanks again for the help.
 
The code your compiler saw was this.
Code:
motorR(= fast,TRIM);
motorL(= fast,TRIM);

The reason for this is that the #define preprocessor directive does nothing more than text replacement. This is why you DON'T want to put = in simple preprocessor directives.
 
I see, that makes sense.