Library for communicating with a Wii classic controller using the I2C bus.
Dependents: WiiClassicControllerTest
Note that you will also need the CommonTypes library to use this.
Get it here:http://mbed.org/users/RichardE/code/CommonTypes/
Diff: WiiClassicControllerWithCalibration.h
- Revision:
- 2:52c4a0b3a509
- Child:
- 3:ecae3d286a99
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WiiClassicControllerWithCalibration.h Sun Jun 30 12:05:27 2013 +0000 @@ -0,0 +1,100 @@ +/* + * SOURCE FILE : WiiClassicControllerWithCalibration.h + * + * Definition of class WiiClassicControllerWithCalibration. + * + */ + +#ifndef WiiClassicControllerWithCalibrationDefined + + #define WiiClassicControllerWithCalibrationDefined + + #include "WiiClassicController.h" + + /// Derived from WiiClassicController but with calibrated analogue inputs. + class WiiClassicControllerWithCalibration : public WiiClassicController { + + public : + + /// Enumeration of all the analogue inputs on the Wii classic controller. + enum AnaIn { + LeftJoyX, + LeftJoyY, + RightJoyX, + RightJoyY, + LeftTrigger, + RightTrigger, + AnaInCount // MUST COME LAST! + }; + + /** Constructor + * @param sda pin to use for SDA. + * @param scl pin to use for SCL. + */ + WiiClassicControllerWithCalibration( PinName sda, PinName scl ); + + /** Destructor + */ + virtual ~WiiClassicControllerWithCalibration(); + + /** Set scaling for a particular analogue input. + * @param m scale (multiplier) for this analogue input. + * @param c offset for this analogue input. + */ + void SetScaling( AnaIn input, float m, float c ); + + /** Get calibrated left joystick X reading. + * @returns a reading between -1 and +1. + */ + float GetCalLJoyX( void ) const; + + /** Get calibrated left joystick Y reading. + * @returns a reading between -1 and +1. + */ + float GetCalLJoyY( void ) const; + + /** Get calibrated right joystick X reading. + * @returns a reading between -1 and +1. + */ + float GetCalRJoyX( void ) const; + + /** Get calibrated right joystick Y reading. + * @returns a reading between -1 and +1. + */ + float GetCalRJoyY( void ) const; + + /** Get calibrated left trigger reading. + * @returns a reading between 0 and +1. + */ + float GetCalLeftTrigger( void ) const; + + /** Get calibrated right trigger reading. + * @returns a reading between 0 and +1. + */ + float GetCalRightTrigger( void ) const; + + private : + + // Record for each analogue input. + class AnaInRec { + public : + float Scale; + float Offset; + }; + + // Records for all analogue inputs. + AnaInRec records[ (int)AnaInCount ]; + + /** Get scaled reading. + * @param input analogue input to scale. + * @param raw raw readings in counts. + * @returns scaled reading. + */ + float GetScaled( AnaIn input, UInt8 raw ) const; + + }; + +#endif + +/* END of WiiClassicControllerWithCalibration.h */ +