Eğer güncel bir suibo geliştirme kartına sahipseniz karttaki pusula sensörü lis2mdl ile değişmiştir. En yakın zamanda sitedeki bilgileri güncelleyeceğiz. Sensörü test etmek için bu örnek kodu kullanabilirsiniz:
#include <Wire.h>
#define LIS2MDL_ADDRESS 0x1E // LIS2MDL varsayılan I2C adresi
// LIS2MDL register adresleri
#define OUTX_L_REG 0x68 // X ekseni LSB
#define OUTX_H_REG 0x69 // X ekseni MSB
#define OUTY_L_REG 0x6A // Y ekseni LSB
#define OUTY_H_REG 0x6B // Y ekseni MSB
#define OUTZ_L_REG 0x6C // Z ekseni LSB
#define OUTZ_H_REG 0x6D // Z ekseni MSB
void setup() {
Serial.begin(9600);
Wire.begin(); // I2C'yi başlat
// LIS2MDL'yi etkinleştirme komutları burada olabilir
Wire.beginTransmission(LIS2MDL_ADDRESS);
Wire.write(0x60); // Control Register 1
Wire.write(0x80); // Continuous mode
Wire.endTransmission();
}
void loop() {
Wire.beginTransmission(LIS2MDL_ADDRESS);
Wire.write(OUTX_L_REG); // X ekseni LSB'den başlat
Wire.endTransmission(false); // Tekrar başlatma ile bitir
Wire.requestFrom(LIS2MDL_ADDRESS, 6); // 6 byte veri oku (XYZ eksenleri)
if (Wire.available() == 6) {
int x = Wire.read() | (Wire.read() << 8);
int y = Wire.read() | (Wire.read() << 8);
int z = Wire.read() | (Wire.read() << 8);
// Okunan verileri seri porta yaz
Serial.print("X: ");
Serial.print(x);
Serial.print(" Y: ");
Serial.print(y);
Serial.print(" Z: ");
Serial.println(z);
}
delay(1000); // 1 saniye bekle
}