Hallo zusammen, ich versuch derzeit mein neues HDMM01 von Pollin zum laufen zu bringen.
Es hängt an einem ArduinoUnoSMD mit folgendem Sketch:
Es werden auch Werte ausgegeben. Allerding kann ich den Kompass drehen und wenden wie ich will, die Werte verändern sich kaum (2080-2099;2050-2070).Code:#include <Wire.h> #define I2ADDR 0×30 #define TakeMeasure 0×01 void setup() { Wire.begin(); Serial.begin(9600); Serial.println("Start Programm"); Wire.beginTransmission(0x30); Wire.write(0x00); Wire.write(0x02); delay(10); Wire.write(0x04); delay(10); } void loop(){ byte MsbX,LsbX,MsbY,LsbY; int x,y; char line[80]; Wire.beginTransmission(0x30); // Pollin HDMM01 Wire.write(0x00); Wire.write(0x01); Wire.endTransmission(); delay(20); Wire.beginTransmission(0x30); Wire.write(0x01); Wire.requestFrom(0x30, 4); while(Wire.available()<4); MsbX =Wire.read(); // obere 4 Bit X LsbX =Wire.read(); // untere 8 Bit X MsbY =Wire.read(); // obere 4 Bit Y LsbY =Wire.read(); // untere 8 Bit Y Wire.endTransmission(); // stop transmitting x=((MsbX&0x0f)*256)+(LsbX); y=((MsbY&0x0f)*256)+(LsbY); // Ausgabe von X, Y Serial.print("KOM:"); Serial.print(x); Serial.print(";"); Serial.println(y); delay(500); }
Kann mir da jemand weiterhelfen?
vg malte







Zitieren

Lesezeichen