HMC5882 from BlazeX

Dependents:   Sensor_test Algoritmo_Fuzzy

Committer:
caroe
Date:
Wed May 30 10:45:00 2012 +0000
Revision:
0:a5e06bb74915

        

Who changed what in which revision?

UserRevisionLine numberNew 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 };