NEW GURO ACCE — ESP32 simulation

An interactive ESP32 circuit simulation you can run free in your browser on Velxio, by josephkinuthia541.

Components

Sketch code

#include <Wire.h>

#define LSM6DS3_ADDR 0x6A

#define WHO_AM_I     0x0F
#define CTRL1_XL     0x10
#define CTRL2_G      0x11

#define OUTX_L_G     0x22
#define OUTX_L_XL    0x28


void writeRegister(byte reg, byte value)
{
  Wire.beginTransmission(LSM6DS3_ADDR);
  Wire.write(reg);
  Wire.write(value);
  Wire.endTransmission();
}


byte readRegister(byte reg)
{
  Wire.beginTransmission(LSM6DS3_ADDR);
  Wire.write(reg);
  Wire.endTransmission(false);

  Wire.requestFrom(LSM6DS3_ADDR, 1);

  return Wire.read();
}


int16_t read16(byte reg)
{
  Wire.beginTransmission(LSM6DS3_ADDR);
  Wire.write(reg);
  Wire.endTransmission(false);

  Wire.requestFrom(LSM6DS3_ADDR, 2);

  byte low = Wire.read();
  byte high = Wire.read();

  return (int16_t)(high << 8 | low);
}


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

  Wire.begin(21, 22);

  delay(100);

  byte who = readRegister(WHO_AM_I);

  Serial.print("WHO_AM_I = 0x");
  Serial.println(who, HEX);


  // Accelerometer:
  // 104 Hz, ±4 g

  writeRegister(CTRL1_XL, 0x48);


  // Gyroscope:
  // 104 Hz, 245 dps

  writeRegister(CTRL2_G, 0x40);


  Serial.println("LSM6DS3 started.");
}


void loop()
{
  int16_t gyroX = read16(OUTX_L_G);
  int16_t gyroY = read16(OUTX_L_G + 2);
  int16_t gyroZ = read16(OUTX_L_G + 4);

  int16_t accelX = read16(OUTX_L_XL);
  int16_t accelY = read16(OUTX_L_XL + 2);
  int16_t accelZ = read16(OUTX_L_XL + 4);


  Serial.print("ACC: ");

  Serial.print(accelX);
  Serial.print("  ");

  Serial.print(accelY);
  Serial.print("  ");

  Serial.print(accelZ);


  Serial.print("     GYRO: ");

  Serial.print(gyroX);
  Serial.print("  ");

  Serial.print(gyroY);
  Serial.print("  ");

  Serial.println(gyroZ);


  delay(100);
}

More projects by josephkinuthia541