Minh Nguyen / Accelerometer

Dependencies:   MPU6050

Committer:
khaiminhvn
Date:
Tue Feb 09 23:53:14 2021 +0000
Revision:
0:ab4465742afd
Child:
2:f81ab5d2f0a2
Child:
3:de79cb7b645b
First draft;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
khaiminhvn 0:ab4465742afd 1 //INCLUDES
khaiminhvn 0:ab4465742afd 2 #include "Accelerometer.h"
khaiminhvn 0:ab4465742afd 3 #include "PinAssignment.h"
khaiminhvn 0:ab4465742afd 4
khaiminhvn 0:ab4465742afd 5 //Constructor
khaiminhvn 0:ab4465742afd 6 Accelerometer::Accelerometer(int freq) : Panel(PIN_ACCEL_PANEL),R1(PIN_ACCEL_R1),
khaiminhvn 0:ab4465742afd 7 R2(PIN_ACCEL_R2),acc(PIN_SDA,PIN_SCL)
khaiminhvn 0:ab4465742afd 8 {
khaiminhvn 0:ab4465742afd 9 //Set Output Control
khaiminhvn 0:ab4465742afd 10 Panel = 0; //Panel Array
khaiminhvn 0:ab4465742afd 11 R1 = 1; //Reflector 2
khaiminhvn 0:ab4465742afd 12 R2 = 1; //Reflector 1
khaiminhvn 0:ab4465742afd 13
khaiminhvn 0:ab4465742afd 14 //Initialize I2C
khaiminhvn 0:ab4465742afd 15 I2C i2c(D14,D15);
khaiminhvn 0:ab4465742afd 16 i2c.frequency(freq);
khaiminhvn 0:ab4465742afd 17
khaiminhvn 0:ab4465742afd 18 //Set Range
khaiminhvn 0:ab4465742afd 19 acc.setAcceleroRange(MPU6050_ACCELERO_RANGE_2G);
khaiminhvn 0:ab4465742afd 20 }
khaiminhvn 0:ab4465742afd 21
khaiminhvn 0:ab4465742afd 22 //setSource
khaiminhvn 0:ab4465742afd 23 void Accelerometer::setSource(int n)
khaiminhvn 0:ab4465742afd 24 {
khaiminhvn 0:ab4465742afd 25 switch(n)
khaiminhvn 0:ab4465742afd 26 {
khaiminhvn 0:ab4465742afd 27 case S_PANEL: //Panel Array
khaiminhvn 0:ab4465742afd 28 Panel = 0;
khaiminhvn 0:ab4465742afd 29 R1 = 1;
khaiminhvn 0:ab4465742afd 30 R2 = 1;
khaiminhvn 0:ab4465742afd 31 break;
khaiminhvn 0:ab4465742afd 32 case S_R1: //Reflector 1
khaiminhvn 0:ab4465742afd 33 Panel = 1;
khaiminhvn 0:ab4465742afd 34 R1 = 0;
khaiminhvn 0:ab4465742afd 35 R2 = 1;
khaiminhvn 0:ab4465742afd 36 break;
khaiminhvn 0:ab4465742afd 37 case S_R2: //Reflector 2
khaiminhvn 0:ab4465742afd 38 Panel = 1;
khaiminhvn 0:ab4465742afd 39 R1 = 1;
khaiminhvn 0:ab4465742afd 40 R2 = 0;
khaiminhvn 0:ab4465742afd 41 break;
khaiminhvn 0:ab4465742afd 42 }
khaiminhvn 0:ab4465742afd 43 }
khaiminhvn 0:ab4465742afd 44
khaiminhvn 0:ab4465742afd 45 //checkConnection
khaiminhvn 0:ab4465742afd 46 bool Accelerometer::checkConnection()
khaiminhvn 0:ab4465742afd 47 {
khaiminhvn 0:ab4465742afd 48 return acc.testConnection();
khaiminhvn 0:ab4465742afd 49 }
khaiminhvn 0:ab4465742afd 50
khaiminhvn 0:ab4465742afd 51 //getAngle
khaiminhvn 0:ab4465742afd 52 float Accelerometer::getAngle(int s)
khaiminhvn 0:ab4465742afd 53 {
khaiminhvn 0:ab4465742afd 54 float ang[3];
khaiminhvn 0:ab4465742afd 55 float ang_out = 0;
khaiminhvn 0:ab4465742afd 56 Accelerometer::setSource(s);
khaiminhvn 0:ab4465742afd 57
khaiminhvn 0:ab4465742afd 58 for(int i = 0;i < N_AVG;i++)
khaiminhvn 0:ab4465742afd 59 {
khaiminhvn 0:ab4465742afd 60 acc.getAcceleroAngle(ang);
khaiminhvn 0:ab4465742afd 61 ang_out += ang[MEAS_AXIS];
khaiminhvn 0:ab4465742afd 62 }
khaiminhvn 0:ab4465742afd 63 return ang_out/N_AVG;
khaiminhvn 0:ab4465742afd 64 }
khaiminhvn 0:ab4465742afd 65
khaiminhvn 0:ab4465742afd 66 //checkAngle
khaiminhvn 0:ab4465742afd 67 bool Accelerometer::checkAngle(float ref, float cur)
khaiminhvn 0:ab4465742afd 68 {
khaiminhvn 0:ab4465742afd 69 if(cur >= (ref-ANGLE_TOL) && cur <= (ref+ANGLE_TOL))
khaiminhvn 0:ab4465742afd 70 {
khaiminhvn 0:ab4465742afd 71 return 1;
khaiminhvn 0:ab4465742afd 72 }
khaiminhvn 0:ab4465742afd 73 return 0;
khaiminhvn 0:ab4465742afd 74 }