Kompass (HMC5883L)

#include <Wire.h>


int8_t data[6];
int16_t x;
int16_t z;
int16_t y;
uint16_t phi;



/*****************************************************************************************************************/
/*                               Funktion zum Ausgeben und Berechnen des Kompasswertes                           */
/*****************************************************************************************************************/

int8_t printKompass(){
  int8_t rueckgabe;
 
  Wire.beginTransmission(30);
  Wire.write(2);
  Wire.write(1);
  Wire.endTransmission();
  
  delay(100);
  
  Wire.requestFrom(30,6);
  int j=0;
  while(Wire.available()){
   data[j] = Wire.read();
   j++;
  }
  
  x=((((int16_t)data[0])<<8)|(int16_t)data[1]);
  z=((((int16_t)data[2])<<8)|(int16_t)data[3]);
  y=((((int16_t)data[4])<<8)|(int16_t)data[5]);
  
  phi=((atan2(x,y)+3.1416)/(2.0*3.1416))*360.0;
  
  Serial.print(x);
  Serial.print(" ");
  Serial.print(y);
  Serial.print(" ");
  Serial.print(z);
  Serial.print(" ");
  Serial.println(phi);
  
  Wire.beginTransmission(30);
  Wire.write(3);
  Wire.endTransmission();
  
  
  return rueckgabe; 
}

/*****************************************************************************************************************/
/*                                         Funktion zum Starten des Kompass                                      */
/*****************************************************************************************************************/

uint8_t startKompass(){
  uint8_t rueckgabe;
  
  delay(70);
  
  Wire.begin();
  Wire.beginTransmission(30);
  Wire.write((uint8_t)0);
  Wire.write(112);

  Wire.beginTransmission((uint8_t)30);
  Wire.write((uint8_t)1);
  Wire.write((uint8_t)160);
  Wire.endTransmission();

  return rueckgabe;
}


void setup(){
  
  Serial.begin(9600);
  startKompass();
 
}

void loop(){
  
  printKompass();
  
  
}
Anhänge:
Diese Datei herunterladen (3-Axis Digital Compass HMC5883L-FDS.pdf)Datenblatt: Kompass (HMC5883L)[ ]%2012-%09-%26 %1:%Sep%+02:00