PiicoDev LIS3DH not working

PiicoDev LIS3DH not working

I am using the I2C communication protocol to communicate between my uno r3 and the piccodev LIS3DH. I’m also using a logic level shifter to switch between the 5V of the arduino and the 3.3V that the LIS3DH runs on. When I tried to get acceleration values, it didn’t work, then I tried an I2C scanner and it said No I2C devices were found. Anyone know how I can fix this issue? Another thing I should add is that while checking the voltage that the sda and cam pin was at it showed 3.3V.

Here is my wiring:

Arduino UNO: Logic shifter: LIS3DH.:
A4. B3. SDA
A5. B2. SCL
GND. GND
5V HV.
3.3V LV
3.3V VCC

Here is the i2c scanner code: (I just copy and pasted it from the internet and i’m not sure if I need any adjustment)

#include <Wire.h>
#define WIRE Wire

void setup() {
  WIRE.begin();

  Serial.begin(9600);
  while (!Serial)
     delay(10);
  Serial.println("\nI2C Scanner");
}


void loop() {
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    WIRE.beginTransmission(address);
    error = WIRE.endTransmission();

    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknown error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

  delay(5000);           // wait 5 seconds for next scan
}

Hi Matthew
If you are trying to power this device via the level shifter then don’t. These level shifters translate the LOGIC signal. They are not power converters.

Anyway if you read the description you don’t need a level shifter. It has on board 3.3V regulator and on board level shifting and is described as being compatible with ANY Arduino board. That means 5V.
Cheers Bob

1 Like

Thanks bob,
I’ll try to remove the logic level converter and see if it works.

I tried to remove the logic level shifter and still, nothing was working.

Hi @matthew271007 - it would be great to see how you have everything wired up!
A picture (and a drawing to supplement) will be really helpful here :slight_smile:

okay!


Here is an image of my wiring, but, the jumper wires block everything.
I can give a drawing if that helps.

thanks @matthew271007 - yeah it’s a bit intimidating to look at :sweat_smile:

Have you soldered that pin header to the LIS3DH board? or are the pins just poking through the holes? If the pins are unsoldered, I think that could be our issue :male_detective:

image

ohh, I haven’t soldered them but if they are touching can’t it still work?

It’s not likely to work at all unless soldered.
If you really want to go solderless you could add a cable like this one
[ CE07796 ] PiicoDev Prototyping Cable (Male) 200mm

yeah, but when I test it with a multimeter the voltage is still changed

Hi Matthew
You do know that pin marked 3.3V is an OUTPUT don’t you.

  • Vin - this is the power pin. Since the chip uses 3 VDC, we have included a voltage regulator on board that will take 3-5VDC and safely convert it down. To power the board, give it the same power as the logic level of your microcontroller - e.g. for a 5V micro like Arduino, use 5V
  • 3Vo - this is the 3.3V output from the voltage regulator, you can grab up to 100mA from this if you like
  • GND - common ground for power and logic
    Cheers Bob
1 Like

Oh no! Have I fried the circuit by putting 3.3v into it? What should I use the 3.3V for then?

Possibly not. But I have not studied the circuit to see what implications there might be.

Nothing
Cheers Bob
PS: Sometimes it does pay to read the descriptions.

1 Like

Thanks Bob!

1 Like