#include // I2C Master lib for ATTinys which use USI #include //SoftwareSerial mySerial(0, 1); // RX, TX SendOnlySoftwareSerial mySerial(1); // TX //#define BUFFER_SIZE 25 #define ADXL343_ADDRESS (0x53) // I2C ADXL343 ALT Address //#define ADXL343_REG_DATAX0 (0x32) // X-axis data 0 //#define ADXL343_REG_DATAY0 (0x34) // Y-axis data 0 //#define ADXL343_REG_DATAZ0 (0x36) // Z-axis data 0 uint8_t adxl343WriteRegister(uint8_t reg, uint8_t value) { TinyWireM.beginTransmission(ADXL343_ADDRESS); TinyWireM.write((uint8_t)reg); TinyWireM.write((uint8_t)value); TinyWireM.endTransmission(); } uint8_t adxl343ReadRegister(uint8_t reg) { TinyWireM.beginTransmission(ADXL343_ADDRESS); TinyWireM.write((uint8_t)reg); TinyWireM.endTransmission(); TinyWireM.requestFrom(ADXL343_ADDRESS, 1); return TinyWireM.read(); } int16_t adxl343ReadWord(uint8_t reg) { TinyWireM.beginTransmission(ADXL343_ADDRESS); TinyWireM.write((uint8_t)reg); TinyWireM.endTransmission(); TinyWireM.requestFrom(ADXL343_ADDRESS, 2); return (uint16_t)(TinyWireM.read() | (TinyWireM.read() << 8)); } void setup() { delay(2000); mySerial.begin(9600); mySerial.flush(); mySerial.print("hello_serial: starting\n"); TinyWireM.begin(); delay(2000); uint8_t deviceId = adxl343ReadRegister(0x00); mySerial.print(" deviceId: "); mySerial.println(deviceId); adxl343WriteRegister(0x2D,0x08); // POWER_CTL register // adxl343WriteRegister(0x31,0x08); // Full res register delay(2000); } void loop() { _delay_ms(200); int16_t x = adxl343ReadWord(0x32);//ADXL343_REG_DATAX0); int16_t y = adxl343ReadWord(0x34);//ADXL343_REG_DATAY0); int16_t z = adxl343ReadWord(0x36);////ADXL343_REG_DATAZ0); mySerial.print("x: "); mySerial.print(x); mySerial.print("\ty: "); mySerial.print(y); mySerial.print("\tz: "); mySerial.println(z); }