ADXL345 ivme sensörü kontrolü

Başlatan kriptolojix, 13 Aralık 2013, 18:04:49

Yazilim


mustafa_cmbz

    void MPU6050_OKU()
    {
    // MPU6050'den veri okuma
  Wire.beginTransmission(MPU);
  Wire.write(0x3B); // Başlangıç register
  Wire.endTransmission(false);
  Wire.requestFrom(MPU, 6, true); // 6 veri oku, true bitişi belirtir
  AcX = Wire.read() << 8 | Wire.read(); // X ekseni
  AcY = Wire.read() << 8 | Wire.read(); // Y ekseni
  AcZ = Wire.read() << 8 | Wire.read(); // Z ekseni

  // Kalibre edilmiş veriler
  float AcX_cal = AcX - AcX_offset;
  float AcY_cal = AcY - AcY_offset;
  float AcZ_cal = AcZ - AcZ_offset;

  // Roll ve Pitch hesaplama
  roll = atan2(AcY_cal, AcZ_cal) * 180 / PI;
  pitch = atan2(-AcX_cal, sqrt(AcY_cal * AcY_cal + AcZ_cal * AcZ_cal)) * 180 / PI;

  // Sonuçları serial monitöre yazdırma
  Serial.print("Roll: ");
  Serial.print(roll);
  Serial.print(" Pitch: ");
  Serial.println(pitch);
    delay(1000);
  
  }

z eksen videoda da anlatıldığı üzere yerçekimi kuvvetini ölçüyor ama açı olarak okunmak istendiğinde sapmalar oluyor.dünyanın dönüş açısı ile alakalı.Bunu tölere etmek için pusula sensörü kullanmak gerekiyormuş.

z ekseni pitch ve roll hesaplarken kullanıyor anladığım kadarıyla..

bu kod ile - + olarak açı okuyabiliyorum.Chatgpt den kolayca kod yazdırabilirsin çalışan kod aramana ve çok fazla matematik bilmene gerek kalmıyor..