HMC5882 from BlazeX
Dependents: Sensor_test Algoritmo_Fuzzy
HMC5883.h@0:a5e06bb74915, 2012-05-30 (annotated)
- Committer:
- caroe
- Date:
- Wed May 30 10:45:00 2012 +0000
- Revision:
- 0:a5e06bb74915
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
caroe | 0:a5e06bb74915 | 1 | #pragma once |
caroe | 0:a5e06bb74915 | 2 | |
caroe | 0:a5e06bb74915 | 3 | //I2C Adresse |
caroe | 0:a5e06bb74915 | 4 | #define HMC5883_ADRESS 0x1E |
caroe | 0:a5e06bb74915 | 5 | |
caroe | 0:a5e06bb74915 | 6 | |
caroe | 0:a5e06bb74915 | 7 | class HMC5883 |
caroe | 0:a5e06bb74915 | 8 | { |
caroe | 0:a5e06bb74915 | 9 | private: |
caroe | 0:a5e06bb74915 | 10 | I2C & I2CBus; |
caroe | 0:a5e06bb74915 | 11 | Timer & GlobalTime; |
caroe | 0:a5e06bb74915 | 12 | |
caroe | 0:a5e06bb74915 | 13 | public: |
caroe | 0:a5e06bb74915 | 14 | //Calibration |
caroe | 0:a5e06bb74915 | 15 | char AutoCalibration; //automatische Kalibrierung der Sensordaten |
caroe | 0:a5e06bb74915 | 16 | short RawMin[3], RawMax[3]; //gespeicherte Daten fuer die Auto-Kalibrierung |
caroe | 0:a5e06bb74915 | 17 | float Scale[3]; //jede Achse einzeln skalieren |
caroe | 0:a5e06bb74915 | 18 | float Offset[3]; //zum Schluss noch das Offset dazu |
caroe | 0:a5e06bb74915 | 19 | |
caroe | 0:a5e06bb74915 | 20 | //Feldstaerke auf allen drei Achsen |
caroe | 0:a5e06bb74915 | 21 | short RawMag[3]; //Rohdaten |
caroe | 0:a5e06bb74915 | 22 | float Mag[3]; //kalibrierte Rohdaten (nicht normalisiert) |
caroe | 0:a5e06bb74915 | 23 | |
caroe | 0:a5e06bb74915 | 24 | //Bei zu hoher Feldstaerke wird -4096 gelesen |
caroe | 0:a5e06bb74915 | 25 | //Wenn dies eine Achse betreffen sollte, ist diese Variable 1 |
caroe | 0:a5e06bb74915 | 26 | short MeasurementError; |
caroe | 0:a5e06bb74915 | 27 | |
caroe | 0:a5e06bb74915 | 28 | |
caroe | 0:a5e06bb74915 | 29 | //Initialisieren |
caroe | 0:a5e06bb74915 | 30 | HMC5883(I2C & I2CBus_, Timer & GlobalTime_); |
caroe | 0:a5e06bb74915 | 31 | void Init(); |
caroe | 0:a5e06bb74915 | 32 | |
caroe | 0:a5e06bb74915 | 33 | private: |
caroe | 0:a5e06bb74915 | 34 | //Rohdaten lesen |
caroe | 0:a5e06bb74915 | 35 | void ReadRawData(); |
caroe | 0:a5e06bb74915 | 36 | |
caroe | 0:a5e06bb74915 | 37 | public: |
caroe | 0:a5e06bb74915 | 38 | //Update-Methode |
caroe | 0:a5e06bb74915 | 39 | void Update(); |
caroe | 0:a5e06bb74915 | 40 | |
caroe | 0:a5e06bb74915 | 41 | //Kalibrieren |
caroe | 0:a5e06bb74915 | 42 | //Fertige Daten benutzen. Scale[0] muss 1.0 sein! |
caroe | 0:a5e06bb74915 | 43 | void Calibrate(const short * pRawMin, const short * pRawMax); |
caroe | 0:a5e06bb74915 | 44 | |
caroe | 0:a5e06bb74915 | 45 | //Selbst auswerten, dauert s Sekunden lang |
caroe | 0:a5e06bb74915 | 46 | void Calibrate(int s); |
caroe | 0:a5e06bb74915 | 47 | }; |