diff --git a/Accelometer_test.cpp b/Accelometer_test.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1d9b50feeb0acfe6fb2fee93228e971cea9a3db2
--- /dev/null
+++ b/Accelometer_test.cpp
@@ -0,0 +1,131 @@
+
+#include <Arduino.h>
+#include<Wire.h>
+#include <math.h>
+
+
+
+const int MPU_addr=0x68;  // I2C address of the MPU-6050
+
+
+int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
+double AccelerationX,AccelerationY,AccelerationZ;
+double R,AngX,AngY,AngZ, NoGAccelX, NoGAccelY, NoGAccelZ;         //    Not sure if to use doubles or int_t or doubles_t or floats
+float velocityX =0;
+float velocityY =0;
+float velocityZ =0;
+
+
+bool first =true;
+
+unsigned long last_time_sampled =0;     //  Used for finding velovity
+unsigned long last_time_printed =0;     //  Used to to print
+
+
+
+
+# define convertAdcMss   ( 9.80665 / (pow(2,14)))     //  Gravity / 2^14 . 
+                                                      // This is because the range of the MPU is +-2G hence 2^16 represents 4 G.
+
+#define DEBOUNCE_TIME 1000                            //  This is to debounce the buttons to problems with button.
+
+volatile uint32_t DebounceTimerUp = 0;                //  Used to calcuale the current time since the button was allowed.
+volatile uint32_t DebounceTimerDown = 0;              //  Used to calcuale the current time since the button was allowed.
+
+
+#define PIN_BUTTON 4  // Pin to which the button, PIR motion detector or radar is connected
+
+
+bool buttonpressdown = false;   //  Used to flag if the button is pressed.
+bool buttonpressup = false;     // Used to flag is button is up aka foot is in the air.
+
+
+//    #define PIN_LED 2      // On board LED used for debugging
+//    #define DELAY_LED 2000
+
+
+
+// These functions are not used yet. 
+// The function is placed in the RAM of the ESP32. 
+void IRAM_ATTR buttonpresseddown() {
+  if ( millis() - DEBOUNCE_TIME  >= DebounceTimerDown ) {
+    DebounceTimerDown = millis();                              
+    buttonpressdown=true;
+  } 
+}
+void IRAM_ATTR buttonpressedup() {
+  if ( millis() - DEBOUNCE_TIME  >= DebounceTimerUp ) {
+    DebounceTimerUp = millis();
+    buttonpressup=true;
+  } 
+}
+
+void setup(){
+  Wire.begin();
+  Wire.beginTransmission(MPU_addr);
+  Wire.write(0x6B);  // PWR_MGMT_1 register
+  Wire.write(0);     // set to zero (wakes up the MPU-6050)
+  Wire.endTransmission(true);
+  Serial.begin(9600);
+
+  pinMode(PIN_BUTTON, INPUT_PULLDOWN);
+  attachInterrupt(PIN_BUTTON, buttonpresseddown, RISING); // This is creating an interupt when the button is pressed.
+  
+}
+void loop(){
+  Wire.beginTransmission(MPU_addr);
+  Wire.write(0x3B);  // 
+  Wire.endTransmission(false);
+  Wire.requestFrom(MPU_addr,14,true);  // 
+  AcX=Wire.read()<<8|Wire.read();  //   Reads the accelormeter
+  AcY=Wire.read()<<8|Wire.read();  // 
+  AcZ=Wire.read()<<8|Wire.read();  // 
+  // Tmp=Wire.read()<<8|Wire.read();  // Reads temp
+  // GyX=Wire.read()<<8|Wire.read();  // Reads the gyroscope
+  // GyY=Wire.read()<<8|Wire.read();  // 
+  // GyZ=Wire.read()<<8|Wire.read();  // 
+  
+  AccelerationX=AcX*convertAdcMss;    //  Converts the input voltage into m/ss
+  AccelerationY=AcY*convertAdcMss;
+  AccelerationZ=AcZ*convertAdcMss;
+  R = sqrt(pow(AccelerationX,2)+pow(AccelerationY,2)+pow(AccelerationZ,2));   //  Resultant vector of acceleration.
+
+
+
+  NoGAccelX=AccelerationX - 9.80665*(AccelerationX/R);      //  Removes the acceleration due to graveity component of the acceleration.
+  NoGAccelY=AccelerationY - 9.80665*(AccelerationY/R);
+  NoGAccelZ=AccelerationZ - 9.80665*(AccelerationZ/R);
+
+  // AngX= acos(AccelerationX/R) *180/PI;
+  // AngY= acos(AccelerationY/R)*180/PI;        //    Calculates the angle of each axis
+  //AngZ= acos(AccelerationZ/R)*180/PI;
+
+
+
+  unsigned long now = micros();                                   //  This is the calcualtion of velocity, acceleration * time at each stage.
+  if(abs(NoGAccelX)>0.5)                                          //  Time at each stage changed in calculated.
+  velocityX += NoGAccelX * (now - last_time_sampled)/1000000;
+  if(abs(NoGAccelY)>0.5)
+  velocityY += NoGAccelY * (now - last_time_sampled)/1000000;
+  if(abs(NoGAccelZ)>0.5)
+  velocityZ += NoGAccelZ * (now - last_time_sampled)/1000000;
+  last_time_sampled = now;
+
+ if (now - last_time_printed >= 200000) {
+        Serial.print("x = ");
+        Serial.print(NoGAccelX);              //    Just changed to print every 0.2 seconds.
+        Serial.print(", x = ");
+        Serial.print(velocityX );
+        Serial.print(" y = ");
+        Serial.print(NoGAccelY);
+        Serial.print(", y = ");
+        Serial.print(velocityY );
+        Serial.print(" z = ");
+        Serial.print(NoGAccelZ);
+        Serial.print(", z = ");
+        Serial.println(velocityZ );
+        last_time_printed = now;
+    }
+
+  delay(30);
+}
\ No newline at end of file