Class to read acceleration measurements from Dimension Engineering Buffered +-3g Tri-axis Accelerometer device.
DimEngAcc3D.h@0:9b3ea4450259, 2011-02-20 (annotated)
- Committer:
- mkanli
- Date:
- Sun Feb 20 08:11:35 2011 +0000
- Revision:
- 0:9b3ea4450259
First cut
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mkanli | 0:9b3ea4450259 | 1 | /** |
mkanli | 0:9b3ea4450259 | 2 | * @file |
mkanli | 0:9b3ea4450259 | 3 | * @section LICENSE |
mkanli | 0:9b3ea4450259 | 4 | * Copyright (c) 2010 Mustafa Ozgur Kanli. |
mkanli | 0:9b3ea4450259 | 5 | * |
mkanli | 0:9b3ea4450259 | 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy |
mkanli | 0:9b3ea4450259 | 7 | * of this software and associated documentation files (the "Software"),to deal |
mkanli | 0:9b3ea4450259 | 8 | * in the Software without restriction, including without limitation the rights |
mkanli | 0:9b3ea4450259 | 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
mkanli | 0:9b3ea4450259 | 10 | * copies of the Software, and to permit persons to whom the Software is |
mkanli | 0:9b3ea4450259 | 11 | * furnished to do so, subject to the following conditions: |
mkanli | 0:9b3ea4450259 | 12 | * |
mkanli | 0:9b3ea4450259 | 13 | * The above copyright notice and this permission notice shall be included in |
mkanli | 0:9b3ea4450259 | 14 | * all copies or substantial portions of the Software. |
mkanli | 0:9b3ea4450259 | 15 | * |
mkanli | 0:9b3ea4450259 | 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
mkanli | 0:9b3ea4450259 | 17 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
mkanli | 0:9b3ea4450259 | 18 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
mkanli | 0:9b3ea4450259 | 19 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
mkanli | 0:9b3ea4450259 | 20 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
mkanli | 0:9b3ea4450259 | 21 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
mkanli | 0:9b3ea4450259 | 22 | * THE SOFTWARE. |
mkanli | 0:9b3ea4450259 | 23 | * |
mkanli | 0:9b3ea4450259 | 24 | * @section Description |
mkanli | 0:9b3ea4450259 | 25 | * This class provides an object to obtain 3D acceleration measurements from a |
mkanli | 0:9b3ea4450259 | 26 | * Dimension Engineering Buffered +-3g Tri-axis Accelerometer. This device uses |
mkanli | 0:9b3ea4450259 | 27 | * the ADXL330. Measurements are obtained using 3 analog inputs. |
mkanli | 0:9b3ea4450259 | 28 | * |
mkanli | 0:9b3ea4450259 | 29 | */ |
mkanli | 0:9b3ea4450259 | 30 | #ifndef DIMENG_ACC3D_H_ |
mkanli | 0:9b3ea4450259 | 31 | #define DIMENG_ACC3D_H_ |
mkanli | 0:9b3ea4450259 | 32 | |
mkanli | 0:9b3ea4450259 | 33 | #include "mbed.h" |
mkanli | 0:9b3ea4450259 | 34 | |
mkanli | 0:9b3ea4450259 | 35 | /** |
mkanli | 0:9b3ea4450259 | 36 | * Acceleration due to gravity at sea level on Earth (m/s/s). |
mkanli | 0:9b3ea4450259 | 37 | */ |
mkanli | 0:9b3ea4450259 | 38 | #define ACC_G 9.80665 |
mkanli | 0:9b3ea4450259 | 39 | |
mkanli | 0:9b3ea4450259 | 40 | /** |
mkanli | 0:9b3ea4450259 | 41 | * Class to read acceleration measurements from Dimension Engineering |
mkanli | 0:9b3ea4450259 | 42 | * Buffered +-3g Tri-axis Accelerometer device. |
mkanli | 0:9b3ea4450259 | 43 | * |
mkanli | 0:9b3ea4450259 | 44 | * Example |
mkanli | 0:9b3ea4450259 | 45 | * @code |
mkanli | 0:9b3ea4450259 | 46 | * #include "mbed.h" |
mkanli | 0:9b3ea4450259 | 47 | * #include "DimEngAcc3D.h" |
mkanli | 0:9b3ea4450259 | 48 | * |
mkanli | 0:9b3ea4450259 | 49 | * int main() { |
mkanli | 0:9b3ea4450259 | 50 | * DimEngAcc3D *acc; |
mkanli | 0:9b3ea4450259 | 51 | * |
mkanli | 0:9b3ea4450259 | 52 | * // Create and configure object for 3.3V powered device, |
mkanli | 0:9b3ea4450259 | 53 | * acc = new DimEngAcc3D(p18, p19, p20); |
mkanli | 0:9b3ea4450259 | 54 | * acc->setVoltage(3.3); |
mkanli | 0:9b3ea4450259 | 55 | * |
mkanli | 0:9b3ea4450259 | 56 | * while(1) { |
mkanli | 0:9b3ea4450259 | 57 | * // Read. |
mkanli | 0:9b3ea4450259 | 58 | * acc->read(); |
mkanli | 0:9b3ea4450259 | 59 | * |
mkanli | 0:9b3ea4450259 | 60 | * // Print and delay 0.5s. |
mkanli | 0:9b3ea4450259 | 61 | * printf("%.3f, %.3f, %.3f\r\n", acc->x, acc->y, acc->z); |
mkanli | 0:9b3ea4450259 | 62 | * wait(0.5); |
mkanli | 0:9b3ea4450259 | 63 | * } |
mkanli | 0:9b3ea4450259 | 64 | * } |
mkanli | 0:9b3ea4450259 | 65 | * @endcode |
mkanli | 0:9b3ea4450259 | 66 | */ |
mkanli | 0:9b3ea4450259 | 67 | class DimEngAcc3D { |
mkanli | 0:9b3ea4450259 | 68 | |
mkanli | 0:9b3ea4450259 | 69 | private: |
mkanli | 0:9b3ea4450259 | 70 | float ref_voltage; //!< Supply/reference voltage (V). |
mkanli | 0:9b3ea4450259 | 71 | float zero_point; //!< Zero g voltage output (V). |
mkanli | 0:9b3ea4450259 | 72 | float sensitivity; //!< Sensitivity at reference voltage (V/g). |
mkanli | 0:9b3ea4450259 | 73 | AnalogIn *ain_x; //!< For analog reads of acceleration in x axis. |
mkanli | 0:9b3ea4450259 | 74 | AnalogIn *ain_y; //!< For analog reads of acceleration in y axis. |
mkanli | 0:9b3ea4450259 | 75 | AnalogIn *ain_z; //!< For analog reads of acceleration in z axis. |
mkanli | 0:9b3ea4450259 | 76 | |
mkanli | 0:9b3ea4450259 | 77 | /** |
mkanli | 0:9b3ea4450259 | 78 | * Initialize private variables according to the specified |
mkanli | 0:9b3ea4450259 | 79 | * reference voltage |
mkanli | 0:9b3ea4450259 | 80 | * @param voltage The specified voltage. |
mkanli | 0:9b3ea4450259 | 81 | */ |
mkanli | 0:9b3ea4450259 | 82 | void initFromVoltage(float voltage); |
mkanli | 0:9b3ea4450259 | 83 | |
mkanli | 0:9b3ea4450259 | 84 | public: |
mkanli | 0:9b3ea4450259 | 85 | float x; //!< Most recent acceleration in x axis (m/s/s). |
mkanli | 0:9b3ea4450259 | 86 | float y; //!< Most recent acceleration in y axis (m/s/s). |
mkanli | 0:9b3ea4450259 | 87 | float z; //!< Most recent acceleration in z axis (m/s/s). |
mkanli | 0:9b3ea4450259 | 88 | |
mkanli | 0:9b3ea4450259 | 89 | /** |
mkanli | 0:9b3ea4450259 | 90 | * Constructor. |
mkanli | 0:9b3ea4450259 | 91 | * |
mkanli | 0:9b3ea4450259 | 92 | * @param pin_x Pin connected to output x of device. |
mkanli | 0:9b3ea4450259 | 93 | * @param pin_y Pin connected to output y of device. |
mkanli | 0:9b3ea4450259 | 94 | * @param pin_z Pin connected to output z of device. |
mkanli | 0:9b3ea4450259 | 95 | * @note Unused/unconnected outputs may be specified as NC. |
mkanli | 0:9b3ea4450259 | 96 | */ |
mkanli | 0:9b3ea4450259 | 97 | DimEngAcc3D(PinName pin_x, PinName pin_y, PinName pin_z); |
mkanli | 0:9b3ea4450259 | 98 | |
mkanli | 0:9b3ea4450259 | 99 | /** |
mkanli | 0:9b3ea4450259 | 100 | * Destructor. |
mkanli | 0:9b3ea4450259 | 101 | */ |
mkanli | 0:9b3ea4450259 | 102 | ~DimEngAcc3D(void); |
mkanli | 0:9b3ea4450259 | 103 | |
mkanli | 0:9b3ea4450259 | 104 | /** |
mkanli | 0:9b3ea4450259 | 105 | * Specify the supply voltage used by the device. |
mkanli | 0:9b3ea4450259 | 106 | * |
mkanli | 0:9b3ea4450259 | 107 | * @param voltage The specified voltage (default 3.3) |
mkanli | 0:9b3ea4450259 | 108 | * @note This is important for correct conversion of the voltage |
mkanli | 0:9b3ea4450259 | 109 | * from output pins of device into acceleration in m/s/s. |
mkanli | 0:9b3ea4450259 | 110 | */ |
mkanli | 0:9b3ea4450259 | 111 | void setVoltage(float voltage); |
mkanli | 0:9b3ea4450259 | 112 | |
mkanli | 0:9b3ea4450259 | 113 | /** |
mkanli | 0:9b3ea4450259 | 114 | * Read acceleration and store in x, y & z. |
mkanli | 0:9b3ea4450259 | 115 | */ |
mkanli | 0:9b3ea4450259 | 116 | void read(void); |
mkanli | 0:9b3ea4450259 | 117 | }; |
mkanli | 0:9b3ea4450259 | 118 | |
mkanli | 0:9b3ea4450259 | 119 | #endif |