| /*----------------------------------------------------------------------------*/ |
| /* Copyright (c) FIRST 2008. All Rights Reserved. */ |
| /* Open Source Software - may be modified and shared by FRC teams. The code */ |
| /* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ |
| /*----------------------------------------------------------------------------*/ |
| |
| #ifndef __HiTechnicCompass_h__ |
| #define __HiTechnicCompass_h__ |
| |
| #include "SensorBase.h" |
| |
| class I2C; |
| |
| /** |
| * HiTechnic NXT Compass. |
| * |
| * This class alows access to a HiTechnic NXT Compass on an I2C bus. |
| * These sensors to not allow changing addresses so you cannot have more |
| * than one on a single bus. |
| * |
| * Details on the sensor can be found here: |
| * http://www.hitechnic.com/index.html?lang=en-us&target=d17.html |
| * |
| * @todo Implement a calibration method for the sensor. |
| */ |
| class HiTechnicCompass : public SensorBase |
| { |
| public: |
| explicit HiTechnicCompass(UINT8 moduleNumber); |
| virtual ~HiTechnicCompass(); |
| float GetAngle(); |
| |
| private: |
| static const UINT8 kAddress = 0x02; |
| static const UINT8 kManufacturerBaseRegister = 0x08; |
| static const UINT8 kManufacturerSize = 0x08; |
| static const UINT8 kSensorTypeBaseRegister = 0x10; |
| static const UINT8 kSensorTypeSize = 0x08; |
| static const UINT8 kHeadingRegister = 0x44; |
| |
| I2C* m_i2c; |
| }; |
| |
| #endif |
| |