Hallo Zusammen
Ich möchte die Register vom AK09911 beschreiben und auslesen, jedoch schaffe ich das irgendwie nicht.
Das habe ich bis jetzt getan.
Ich habe mir mal das Datasheet des besagten Chips durchgelesen und anschliessend auch die Reference Seite über die Wire.h Library auf der Arduino Webseite.
Nach etwas Verwirrung, was denn bitte xxh als Register Adressen zu bedeuten hat, habe ich rausgefunden, dass das einfach Hex Zahlen sind.
Dann habe ich versucht mein erstes Skript zu schreiben, um mir als erstes mal die X Achse auszugeben. Dieses sieht wie Folgt aus:
//Test for the Magnetic Compass Arduino for MA
#include <Wire.h>
int slave_adress = 12;
int statusofend = 0; //for the return value of the Wire.endTransmission() function.
void startup();
void powerdown();
void setup() {
Wire.begin();
Serial.begin(115200);
Serial.println("Online");
startup();
Serial.println("Startup done");
}
void loop() {
if (Serial.readString() == "12"){
powerdown();
}
Wire.beginTransmission(slave_adress);
Wire.write(0x11);
Wire.requestFrom(slave_adress, 2);
while(Wire.available() == 0);
int x = Wire.read();
Serial.print("Receved Value for X = ");
Serial.println(x);
Serial.print("Receved binary Value for X = ");
Serial.println(x, BIN);
Serial.println("loop done");
}
void startup(){
Wire.beginTransmission(slave_adress);
Serial.println("Transmission begin");
Wire.write(0x31);
Serial.println("Write Adress");
Wire.write(0b00000010); //activates Continuous Mode 1
Serial.println("Data written");
statusofend = Wire.endTransmission();
Serial.println(statusofend);
Serial.println("Transmission ended");
}
void powerdown(){
Wire.beginTransmission(slave_adress);
Wire.write(0x31);
Wire.write(0);
Wire.endTransmission();
Das ganze bleibt immer im Setup stecken, nämlich im Wire.endTransmission() befehl.
Bearbeitung Es bleibt im ersten Wire.endTransmission() befehl stecken, dem aus void startup(); Bearbeitung
Datasheet: https://www.akm.com/akm/en/file/datasheet/AK09911C.pdf
Breakout Bord: Cjmcu-008 3 axis magnetometer compass magnetic sensor accuracy 0.15μt/ lsb module Sale - Banggood.com sold out-arrival notice-arrival notice
- Die Adresse ist 0001100, entsprechend dem Datasheet, siehe Seite 21. Ich habe CAD auf Ground gesetzt.
- Generelle Informationen über die Register finden sich auf Seite 25-29.
- Das Skript soll den Continuous measuremenet mode 1 starten, Register und Wert, den ich in startup verwendet habe, finden sich auf Seite 29.
- Nähere Informationen über die Datenregister auf Seite 28.
- I2C Read / Write auf 23f.
Was ich noch nicht im Skript realisiert habe wäre eine Überprüfung einiger Status register.
(Satusregister 1 DRDY, DRO und HOFL in Statusregister 2)
Danke für eure Hilfe.
AliSot2000