#include #include "Wire.h" inline void IMU_sensing(void); //Object Declaration ADXL345 adxl; int rawSixDof[6]; void setup() { Serial.begin(9600); pinMode(A0, INPUT); pinMode(D6, OUTPUT); adxl.powerOn(); //setting all interupts to take place on int pin 1 //set activity/ inactivity thresholds (0-255) adxl.setActivityThreshold(4); // 62.5mg per increment adxl.setInactivityThreshold(75); // 62.5mg per increment adxl.setTimeInactivity(1); // how many seconds of no activity is inactive? //look of activity movement on this axes - 1 == on; 0 == off adxl.setActivityX(1); adxl.setActivityY(1); adxl.setActivityZ(0); //ADXL345 interrupt mapping adxl.setInterruptMapping(ADXL345_INT_ACTIVITY_BIT, ADXL345_INT2_PIN); adxl.setInterruptMapping(ADXL345_INT_INACTIVITY_BIT, ADXL345_INT2_PIN); //ADXL345 interrupt setting adxl.setInterrupt(ADXL345_INT_ACTIVITY_BIT, 0); // register interupt actions - 1 == on; 0 == off adxl.setInterrupt(ADXL345_INT_INACTIVITY_BIT, 0); Wire.begin(); // initialize I2C communications delay(5); } void loop() { Serial.println(digitalRead(A0)); // debug value delay(1000); int x, y, z; adxl.readAccel(&x, &y, &z); rawSixDof[0] = x; rawSixDof[1] = y; rawSixDof[2] = z; Serial.print("X : "); Serial.println(rawSixDof[0]); Serial.print("Y : "); Serial.println(rawSixDof[1]); Serial.print("Z : "); Serial.println(rawSixDof[2]); sleepNow(); } void sleepNow() { //******************** //Arduino Sleep mode //******************** //set_sleep_mode(SLEEP_MODE_PWR_SAVE); // sleep mode is set here //sleep_enable(); //**************************** //Nordic nrf51822 Sleep mode //**************************** __SEV(); __WFE(); __WFE(); adxl.getInterruptSource(); attachInterrupt(A0, wakeUp, CHANGE); adxl.setInterrupt(ADXL345_INT_ACTIVITY_BIT, 1); //sleep_mode(); //sleep_disable(); // first thing after waking from sleep: //detachInterrupt(A0); } void wakeUp() // wake up { Serial.println("Activity"); digitalWrite(D6,HIGH); delay(100); digitalWrite(D6, LOW); delay(100); }