ADXL345 and Arduino Nano 328

So I bought a Riorand ADXL345 accelerometer chip and an Arduino Nano 328 chipset.
I am trying to connect these with an I2C interface.
I have SDA going to A4, SCL to A5, GND to GND, and I tried both 3.3V and 5V for VCC (apparently it has a range of 3-5V but I am not too sure how true that is).
The code I am using is below but it is just the default code from sensortest script found in the examples of the Adafruit_ADXL345-Master Library found here: GitHub - adafruit/Adafruit_ADXL345: Unified driver for the ADXL345 Accelerometer
That library also uses the Wire library and the Adafruit_Sensor Library found here: GitHub - adafruit/Adafruit_Sensor: Common sensor library

Now when I first try to read from the serial monitor, nothing comes up except the beginning "Accelerometer Test".
If I apply the VCC voltage to CS then I get readings from it but they are all max negative values and nothing I do physically will change them.

Is there something I am missing? Do I need to connect CS at all for I2C? Should I not be using the Adafruit library for a Riorand sensor?

Thanks.

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL345_U.h>

/* Assign a unique ID to this sensor at the same time */
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345);

void displaySensorDetails(void)
{
  sensor_t sensor;
  accel.getSensor(&sensor);
  Serial.println("------------------------------------");
  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);
  Serial.print  ("Unique ID:    "); Serial.println(sensor.sensor_id);
  Serial.print  ("Max Value:    "); Serial.print(sensor.max_value); Serial.println(" m/s^2");
  Serial.print  ("Min Value:    "); Serial.print(sensor.min_value); Serial.println(" m/s^2");
  Serial.print  ("Resolution:   "); Serial.print(sensor.resolution); Serial.println(" m/s^2");  
  Serial.println("------------------------------------");
  Serial.println("");
  delay(500);
}

void displayDataRate(void)
{
  Serial.print  ("Data Rate:    "); 
  
  switch(accel.getDataRate())
  {
    case ADXL345_DATARATE_3200_HZ:
      Serial.print  ("3200 "); 
      break;
    case ADXL345_DATARATE_1600_HZ:
      Serial.print  ("1600 "); 
      break;
    case ADXL345_DATARATE_800_HZ:
      Serial.print  ("800 "); 
      break;
    case ADXL345_DATARATE_400_HZ:
      Serial.print  ("400 "); 
      break;
    case ADXL345_DATARATE_200_HZ:
      Serial.print  ("200 "); 
      break;
    case ADXL345_DATARATE_100_HZ:
      Serial.print  ("100 "); 
      break;
    case ADXL345_DATARATE_50_HZ:
      Serial.print  ("50 "); 
      break;
    case ADXL345_DATARATE_25_HZ:
      Serial.print  ("25 "); 
      break;
    case ADXL345_DATARATE_12_5_HZ:
      Serial.print  ("12.5 "); 
      break;
    case ADXL345_DATARATE_6_25HZ:
      Serial.print  ("6.25 "); 
      break;
    case ADXL345_DATARATE_3_13_HZ:
      Serial.print  ("3.13 "); 
      break;
    case ADXL345_DATARATE_1_56_HZ:
      Serial.print  ("1.56 "); 
      break;
    case ADXL345_DATARATE_0_78_HZ:
      Serial.print  ("0.78 "); 
      break;
    case ADXL345_DATARATE_0_39_HZ:
      Serial.print  ("0.39 "); 
      break;
    case ADXL345_DATARATE_0_20_HZ:
      Serial.print  ("0.20 "); 
      break;
    case ADXL345_DATARATE_0_10_HZ:
      Serial.print  ("0.10 "); 
      break;
    default:
      Serial.print  ("???? "); 
      break;
  }  
  Serial.println(" Hz");  
}

void displayRange(void)
{
  Serial.print  ("Range:         +/- "); 
  
  switch(accel.getRange())
  {
    case ADXL345_RANGE_16_G:
      Serial.print  ("16 "); 
      break;
    case ADXL345_RANGE_8_G:
      Serial.print  ("8 "); 
      break;
    case ADXL345_RANGE_4_G:
      Serial.print  ("4 "); 
      break;
    case ADXL345_RANGE_2_G:
      Serial.print  ("2 "); 
      break;
    default:
      Serial.print  ("?? "); 
      break;
  }  
  Serial.println(" g");  
}

void setup(void) 
{
  Serial.begin(9600);
  Serial.println("Accelerometer Test"); Serial.println("");
  
  /* Initialise the sensor */
  if(!accel.begin())
  {
    /* There was a problem detecting the ADXL345 ... check your connections */
    Serial.println("Ooops, no ADXL345 detected ... Check your wiring!");
    while(1);
  }

  /* Set the range to whatever is appropriate for your project */
  accel.setRange(ADXL345_RANGE_16_G);
  // displaySetRange(ADXL345_RANGE_8_G);
  // displaySetRange(ADXL345_RANGE_4_G);
  // displaySetRange(ADXL345_RANGE_2_G);
  
  /* Display some basic information on this sensor */
  displaySensorDetails();
  
  /* Display additional settings (outside the scope of sensor_t) */
  displayDataRate();
  displayRange();
  Serial.println("");
}

void loop(void) 
{
  /* Get a new sensor event */ 
  sensors_event_t event; 
  accel.getEvent(&event);
 
  /* Display the results (acceleration is measured in m/s^2) */
  Serial.print("X: "); Serial.print(event.acceleration.x); Serial.print("  ");
  Serial.print("Y: "); Serial.print(event.acceleration.y); Serial.print("  ");
  Serial.print("Z: "); Serial.print(event.acceleration.z); Serial.print("  ");Serial.println("m/s^2 ");
  delay(500);
}

So here is the link to the board i bought: http://www.amazon.com/gp/product/B00L9O7NRE/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1

I also soldered VCC to CS considering that is the only way I seem to get anything at this point.

I just have no idea what code to use for a riorand or what needs to happen.

The data sheet says to tie the CS high for I2C comm, so that is right. Try Nick Gammon's I2C scanner to confirm communication and make sure the address is right. Copy and paste,into your IDE, the code below

#include <Wire.h>

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

  // Leonardo: wait for serial port to connect
  while (!Serial) 
    {
    }

  Serial.println ();
  Serial.println ("I2C scanner. Scanning ...");
  byte count = 0;
  
  Wire.begin();
  for (byte i = 1; i < 120; i++)
  {
    Wire.beginTransmission (i);
    if (Wire.endTransmission () == 0)
      {
      Serial.print ("Found address: ");
      Serial.print (i, DEC);
      Serial.print (" (0x");
      Serial.print (i, HEX);
      Serial.println (")");
      count++;
      delay (1);  // maybe unneeded?
      } // end of good response
  } // end of for loop
  Serial.println ("Done.");
  Serial.print ("Found ");
  Serial.print (count, DEC);
  Serial.println (" device(s).");
}  // end of setup

void loop() {}

OK, that worked.
One note is that I changed the circuit so that SDO is tied to GND and SDA and SCL have pullup resistors of 4K7 ohms between VCC and those pins. (the code worked before and after this change)
It reported one device with the address of 0x53.
What I am confused about is why I am still getting max negative values from the adxl345.

Could you please post the datasheet that you used? Perhaps the addresses are different for the data?

Sorry for posting so much but I found new information by looking at the circuit diagram on the riorand adxl345.
The board does have a LDO for 3.3V which will protect the device from the arduino's 5V.
Also it includes resistors already for the I2C interface. I have removed my external resistors on the board.
Now the circuit is SDA-A4, SCL-A5, VCC/CS-5V, GND/SDO-GND (still works as before however).
Perhaps the sensor is bad and stuck? Suggestions?

Here is the data sheet and the sketch that I used to test my ADXL345. The sketch outputs raw unscaled data (if I remember right). The I2C address is the same as yours (0x53).

Edit: I hooked up an ADXL345 to my Uno and, using the attached code, am getting good raw unscaled data from the sensor. Scaling is a simple matter of multiplying the raw data by 0.004 (scale factor is 4mg/LSB).

ADXL345.pdf (649 KB)

adxl345.ino (2.26 KB)

I think the sensor is just bad. Every sketch I run always pulls -512 for every value.

Does anyone have a preferred accelerometer? I just returned that board and I am looking for a new one.

My preferred accel is one that fits the use.
Do you need 16g range, 2g? What frequency response? Digital or analog outputs? Stuff like tap detection or zero g detection? Decide on those parameters and start looking at datasheets.