LIS331DLH + Multiwii

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем Yanderfully, 24 сен 2019.

  1. Yanderfully

    Yanderfully Нерд

    Если вы счастливый обладатель troyka-imu и решили сделать квадракоптер
    не надо
    на мултиви, то вот код для акселерометра

    Копируем и вставляем

    config.h
    Код (C++):
     /* I2C accelerometer */
          //#define NUNCHUCK  // if you want to use the nunckuk connected to a WMP
          //#define MMA7455
          //#define ADXL345
          //#define BMA020
          //#define BMA180
          //#define NUNCHACK  // if you want to use the nunckuk as a standalone I2C ACC without WMP
          //#define LIS3LV02
          //#define LSM303DLx_ACC
          //#define MMA8451Q
          #define LIS331DLH

    def.h

    Код (C++):
    /**************************************************************************************/
    /***************              Sensor Type definitions              ********************/
    /**************************************************************************************/

    #if defined(ADXL345) || defined(BMA020) || defined(BMA180) || defined(NUNCHACK) || defined(MMA7455) || defined(ADCACC) || defined(LIS3LV02) || defined(LIS331DLH) || defined(LSM303DLx_ACC) || defined(MPU6050) || defined(MMA8451Q) || defined(NUNCHUCK)
      #define ACC 1
    #else
      #define ACC 0
    #endif

    sensors.cpp
    Код (C++):
    // ************************************************************************
    // LIS331DLH I2C Accelerometer
    // ************************************************************************
    #if defined(LIS331DLH)
    #define LIS331DLH  0x19

    void ACC_init(){
      i2c_writeReg(LIS331DLH ,0x20 ,0x37 ); // CTRL_REG1   0011 0111 Pwr on, 400Hz
      i2c_writeReg(LIS331DLH ,0x23 ,0x90 ); // CTRL_REG4   1001 0000 BDU, Littl endian, 4g
    }

    void ACC_getADC(){
      TWBR = ((F_CPU / 400000L) - 16) / 2; // change the I2C clock rate to 400kHz
      i2c_getSixRawADC(LIS331DLH,0x28+0x80);
      ACC_ORIENTATION( ((rawADC[1]<<8) | rawADC[0])>>5 ,
                       ((rawADC[3]<<8) | rawADC[2])>>5 ,
                       ((rawADC[5]<<8) | rawADC[4])>>5);
      ACC_Common();
    }
    #endif
    Надеюсь это кому нибудь поможет