I recently purchased an ADXL 345. But whenever I try to run any code, it always comes back with the startup of the ADXL 345 failed. For example, in this code
I'm using the uno and it is powered with 5v, and connected to gnd. The SCL is connected to the SCL pin on the uno and the SDA with the SDA pin on the uno.
Provided that the wiring is correct and the code is correct, "not working" could indicate that the sensor, or the processor, or both have been damaged.
However, you not posted evidence that either the wiring or the code is correct.
With a new I2C device, always run the I2C Address Scanner program first, to check whether communication is working, and the sensor is detected at an expected I2C address.
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
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
}
You forgot to mention which logic level shifter you are using, and text is no substitute for a wiring diagram.
Most level shifters require both a 5V and 3.3V connection. Post a link to the logic level shifter product page, and a closeup, focused photo of your setup.
Make sure all header pin connections are cleanly soldered, with no solder bridges or in complete solder joints.