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:
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:
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?
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.
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.
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.)