Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Accelerometer.cpp@0:ab4465742afd, 2021-02-09 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |