## Arduino-Programm Esp32AngleProtractor GY-291 ADXL345

- VÖLLIG OHNE Adafruit-Libraries
- Ausgabe Winkel aller Ebenen XY / XZ / YZ

Ja. Minimal ohne jede Library außer `Wire.h`:

    #include <Wire.h>
    #include <math.h>

    #define ADXL345_ADDR 0x53   // GY-291 meist: SDO/GND -> 0x53

    int16_t ax, ay, az;

    void writeReg(byte reg, byte value) {
      Wire.beginTransmission(ADXL345_ADDR);
      Wire.write(reg);
      Wire.write(value);
      Wire.endTransmission();
    }

    void readAccel() {
      Wire.beginTransmission(ADXL345_ADDR);
      Wire.write(0x32);                 // DATAX0
      Wire.endTransmission(false);

      Wire.requestFrom(ADXL345_ADDR, 6);

      ax = Wire.read() | (Wire.read() << 8);
      ay = Wire.read() | (Wire.read() << 8);
      az = Wire.read() | (Wire.read() << 8);
    }

    float angleDeg(int16_t a, int16_t b) {
      return atan2((float)a, (float)b) * 180.0 / PI;
    }

    void setup() {
      Serial.begin(115200);
      Wire.begin();

      // ADXL345 einschalten
      writeReg(0x2D, 0x08);   // POWER_CTL: Measure = 1

      // +/- 2g, Full Resolution
      writeReg(0x31, 0x08);   // DATA_FORMAT

      Serial.println("ADXL345 gestartet");
    }

    void loop() {
      readAccel();

      float angleXY = angleDeg(ay, ax);
      float angleXZ = angleDeg(az, ax);
      float angleYZ = angleDeg(az, ay);

      Serial.print("X=");
      Serial.print(ax);
      Serial.print("  Y=");
      Serial.print(ay);
      Serial.print("  Z=");
      Serial.print(az);

      Serial.print("  Winkel XY=");
      Serial.print(angleXY, 1);
      Serial.print(" deg");

      Serial.print("  XZ=");
      Serial.print(angleXZ, 1);
      Serial.print(" deg");

      Serial.print("  YZ=");
      Serial.print(angleYZ, 1);
      Serial.println(" deg");

      delay(500);
    }

Anschluss Arduino Uno:

    GY-291 VCC  -> 3.3V
    GY-291 GND  -> GND
    GY-291 SDA  -> A4
    GY-291 SCL  -> A5

Wichtig: Der ADXL345 ist ein 3.3V-Sensor. Viele GY-291-Module haben zwar Regler/Levelshifter, aber nicht alle. Bei Unsicherheit besser mit 3.3V-I2C betreiben.