df

Dependencies:   mbed

Fork of APP1 by Team APP

Committer:
dupm2216
Date:
Tue Jan 17 20:01:40 2017 +0000
Revision:
19:f5aa0ce5546b
Parent:
9:12519f9dd3cd
Child:
21:a111be2582be
Integrate moving average filter in accelerometer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dupm2216 3:1a9d0f0a50bf 1 #ifndef ACCELEROMETER_HPP
dupm2216 3:1a9d0f0a50bf 2 #define ACCELEROMETER_HPP
dupm2216 1:7becb0e903e3 3
dupm2216 1:7becb0e903e3 4 #include "mbed.h"
dupm2216 19:f5aa0ce5546b 5 #include "Utility.hpp"
dupm2216 1:7becb0e903e3 6
dupm2216 7:1e00dfecc92d 7 namespace accelerometer
dupm2216 1:7becb0e903e3 8 {
dupm2216 7:1e00dfecc92d 9 const int NUMBER_OF_DATA_REGISTERS = 6;
dupm2216 7:1e00dfecc92d 10 const char OUT_X_MSB_REGISTER = 0x01;
dupm2216 7:1e00dfecc92d 11 const char OUT_X_LSB_REGISTER = 0x02;
dupm2216 7:1e00dfecc92d 12 const char OUT_Y_MSB_REGISTER = 0x03;
dupm2216 7:1e00dfecc92d 13 const char OUT_Y_LSB_REGISTER = 0x04;
dupm2216 7:1e00dfecc92d 14 const char OUT_Z_MSB_REGISTER = 0x05;
dupm2216 7:1e00dfecc92d 15 const char OUT_Z_LSB_REGISTER = 0x06;
dupm2216 7:1e00dfecc92d 16
dupm2216 7:1e00dfecc92d 17 const char WHO_AM_I_REGISTER = 0x0D;
dupm2216 7:1e00dfecc92d 18 const char CTRL_REG1_REGISTER_ADDRESS = 0x2A;
dupm2216 7:1e00dfecc92d 19
dupm2216 7:1e00dfecc92d 20 const int I2C_ACCELEROMETER_ADDRESS = 0x1D;
dupm2216 7:1e00dfecc92d 21
dupm2216 7:1e00dfecc92d 22 enum Axis
dupm2216 7:1e00dfecc92d 23 {
dupm2216 7:1e00dfecc92d 24 AXIS_X,
dupm2216 7:1e00dfecc92d 25 AXIS_Y,
dupm2216 7:1e00dfecc92d 26 AXIS_Z,
dupm2216 7:1e00dfecc92d 27 AXIS_INVALID
dupm2216 7:1e00dfecc92d 28 };
dupm2216 7:1e00dfecc92d 29
dupm2216 7:1e00dfecc92d 30 int raw_axis_data_to_int(signed char raw_axis_data);
dupm2216 7:1e00dfecc92d 31 char get_axis_register(Axis axis);
dupm2216 7:1e00dfecc92d 32 double g_force_from_int_axis_data(const int axis_data);
dupm2216 7:1e00dfecc92d 33 double angle_from_int_axis_data(const int axis_data);
dupm2216 7:1e00dfecc92d 34
dupm2216 7:1e00dfecc92d 35 class Accelerometer
dupm2216 7:1e00dfecc92d 36 {
dupm2216 7:1e00dfecc92d 37 public:
dupm2216 7:1e00dfecc92d 38 Accelerometer(
dupm2216 7:1e00dfecc92d 39 PinName sda_pin,
dupm2216 19:f5aa0ce5546b 40 PinName scl_pin,
dupm2216 19:f5aa0ce5546b 41 const int filter_size,
dupm2216 7:1e00dfecc92d 42 const int slave_address = I2C_ACCELEROMETER_ADDRESS
dupm2216 7:1e00dfecc92d 43 );
dupm2216 7:1e00dfecc92d 44
dupm2216 7:1e00dfecc92d 45 void write_register(const char register_address, const char new_value);
dupm2216 7:1e00dfecc92d 46 char read_register(const char register_address);
dupm2216 7:1e00dfecc92d 47
dupm2216 7:1e00dfecc92d 48 //axis_data must be an array of length 6
dupm2216 7:1e00dfecc92d 49 void read_all_axis(signed char* axis_data);
dupm2216 7:1e00dfecc92d 50 void print_all_axis_data();
dupm2216 7:1e00dfecc92d 51
dupm2216 7:1e00dfecc92d 52 void set_standby();
dupm2216 7:1e00dfecc92d 53 void set_active();
dupm2216 7:1e00dfecc92d 54 void init();
dupm2216 7:1e00dfecc92d 55
dupm2216 7:1e00dfecc92d 56 //Read data from the 8 most significant bits (MSB) of a given axis
dupm2216 7:1e00dfecc92d 57 int read_axis_data_8_bits(Axis axis);
dupm2216 7:1e00dfecc92d 58
dupm2216 7:1e00dfecc92d 59 double get_angle_from_horizontal();
dupm2216 1:7becb0e903e3 60
dupm2216 7:1e00dfecc92d 61 private:
dupm2216 7:1e00dfecc92d 62 I2C device;
dupm2216 19:f5aa0ce5546b 63 utility::MovingAverageFilter filter;
dupm2216 7:1e00dfecc92d 64 const int slave_address;
dupm2216 19:f5aa0ce5546b 65
dupm2216 7:1e00dfecc92d 66 };
dupm2216 9:12519f9dd3cd 67 }
dupm2216 3:1a9d0f0a50bf 68 #endif