#include const int CS_PIN = 10; void setup() { Serial.begin(115200); pinMode(CS_PIN, OUTPUT); digitalWrite(CS_PIN, HIGH); SPI.begin(6, 2, 7, 10); // SCK, MISO, MOSI SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0)); //1 MHz //Soft-Reset writeRegister(0x2A, 0b00000010); uint16_t softReset = readRegister(0x26); Serial.print("Soft-Reset: "); Serial.println(softReset); //Modus-Wahl writeRegister(0x26, 0b00000000); //Standby-Mode uint16_t mode1 = readRegister(0x26); Serial.print("Mode_1: "); Serial.println(mode1); writeRegister(0x27, 0b11100000); //0x27 = DIGITAL ENABLE Reg / -> x-, y-, z-Achse and Temperatur = 1111, FIFO = 0, Double Speed = 0, INT01_EVENT = 0, PARITY_EN = uint16_t dig_En = readRegister(0x27); Serial.print("Dig_En: "); Serial.println(dig_En); writeRegister(0x26, 0b00001100); //0x26 = OP_Mode-Reg. / -> 4G == 00 , PDM = 0, Audio = 0, High Performance Mode = 1100 uint16_t mode2 = readRegister(0x26); Serial.print("Mode_2: "); Serial.println(mode2); //Status uint16_t status0 = readRegister(0x11); uint16_t status1 = readRegister(0x12); uint16_t status2 = readRegister(0x13); uint16_t status3 = readRegister(0x14); //Status Serial.print("Status0: "); Serial.println(status0); Serial.print("Status1: "); Serial.println(status1); Serial.print("Status2: "); Serial.println(status2); Serial.print("Status3: "); Serial.println(status3); } void loop() { //x-Achse lesen uint16_t ID = readRegister(0x00); uint16_t xH_Data = readRegister(0x15); uint16_t xL_Data = readRegister(0x16); uint16_t h_Temp = readRegister(0x1B); uint16_t l_Temp = readRegister(0x1C); Serial.print("ID: "); Serial.println(ID,HEX); Serial.print("xL_Data: "); Serial.println(xL_Data); Serial.print("xH_Data: "); Serial.println(xH_Data); delay(400); } //Register write void writeRegister(uint8_t registerAddress, uint8_t value) { uint16_t command = ((registerAddress << 9) | value); // R/W-Bit = 0 digitalWrite(CS_PIN, LOW); SPI.transfer16(command); digitalWrite(CS_PIN, HIGH); } //Register read uint16_t readRegister(uint8_t registerAddress){ digitalWrite(CS_PIN, LOW); uint16_t data = SPI.transfer16((registerAddress<<9) | (0x01<<8)); digitalWrite(CS_PIN, HIGH); return data; }