Analog Input Trouble

My co-programmer and I are having some trouble with the RC. We’ve tried both a potentiometer and a gyro connected to the first analog input. I tried to get the raw value using:


printf("Raw value:  %d
", Get_Analog_Value(rc_ana_in01)); 

but it just prints -1. Any suggestions ?

Using newest compiler/IDE, firmware’s updated and we’re using newest default code.

The compiler doesn’t seem to handle this very well. I’ve taken to just using a temporary variable for the return value of a function, then pass the value of the temporary variable into printf. Try this:

unsigned int temp_analog_value;

temp_analog_value = Get_Analog_Value(rc_ana_in01);
printf("Raw value: %u
", temp_analog_value);

-Kevin

I’ll definitely try that, however once I get to robotics I won’t have access to these forums, so in case it doesn’t work out, does anyone have any other tips or things for me to check?

Thanks, Matt.

Matt,

Remember that you are displaying in decimal. -1 = 0xFF which is full scale (>+5V input)… Are you sure it’s not working?

You might test on an alternate controller like the EDU or last year’s RC.

I ran a quick test on the EDU with this year’s 2.4 compiler and didn’t have a problem. I tested with the Get_Analog call in-line and to a temp variable, and with the old printf and new 2.4 stdio.h printf. Same result though every time. 1023 with nothing on analog 1, 0 with the pins shorted.

No matter what we do it remains at minus 1, so I don’t think it’s us not noticing. I’m about to go “borrow” the 2004 RC and see how it likes this, once I make sure we still have its master program. I’m hoping the code snippet above will solve my problems.

By the way, the accelerometer in the kit, could I use that with some decent math to imitate a gyro? Our budget is far too tight to get an Analog Digital gyro, or any other for that matter.

Not really for a gyro. It’s probably better used for distance or as a tilt sensor. It does make a great gravity detector.:wink:

Matt,

To expand upon Mike’s reply above, Get_Analog_Value() returns an unsigned int. Your printf() is expecting to manipulate an int because you used %d instead of %u. I fixed it in my code above, but forgot to mention it as another problem.

-Kevin

Matt,

I forgot to ask which version of the printf() function you’re using? IFI’s original or the version included with the 2.4 compiler?

-Kevin

You may also want to check that it’s plugged in right, that it’s the right port, etc. etc. Also check to see if an analog input defaults to high or low. (Since no ones mentioned it, I think.)

Thanks for all teh help, it’s working now. It was the printf statement.

Thanks guys, mods can close the thread if they want.