upm  1.6.0
Sensor/Actuator repository for libmraa (v1.9.0)
adxl335.hpp
1 /*
2  * Author: Jon Trulson <jtrulson@ics.com>
3  * Copyright (c) 2015 Intel Corporation.
4  *
5  * Adapted from the seeedstudio example
6  * https://github.com/Seeed-Studio/Accelerometer_ADXL335
7  *
8  * Permission is hereby granted, free of charge, to any person obtaining
9  * a copy of this software and associated documentation files (the
10  * "Software"), to deal in the Software without restriction, including
11  * without limitation the rights to use, copy, modify, merge, publish,
12  * distribute, sublicense, and/or sell copies of the Software, and to
13  * permit persons to whom the Software is furnished to do so, subject to
14  * the following conditions:
15  *
16  * The above copyright notice and this permission notice shall be
17  * included in all copies or substantial portions of the Software.
18  *
19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
23  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
24  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
25  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26  */
27 #pragma once
28 
29 #include <string>
30 #include <vector>
31 #include <mraa/aio.h>
32 
33 #define ADXL335_DEFAULT_AREF 5.0
34 #define ADXL335_SENSITIVITY 0.25 // 0.25v/g
35 
36 namespace upm {
37 
63  class ADXL335 {
64  public:
73  ADXL335(int pinX, int pinY, int pinZ, float aref=ADXL335_DEFAULT_AREF);
74 
78  ~ADXL335();
79 
85  void setZeroX(float zeroX) { m_zeroX = zeroX; };
86 
92  void setZeroY(float zeroY) { m_zeroY = zeroY; };
93 
99  void setZeroZ(float zeroZ) { m_zeroZ = zeroZ; };
100 
108  void values(int *xVal, int *yVal, int *zVal);
109 
115  std::vector<int> values();
116 
124  void acceleration(float *xAccel, float *yAccel, float *zAccel);
125 
131  std::vector<float> acceleration();
132 
137  void calibrate();
138 
139  private:
140  mraa_aio_context m_aioX;
141  mraa_aio_context m_aioY;
142  mraa_aio_context m_aioZ;
143  float m_aref;
144  float m_zeroX, m_zeroY, m_zeroZ;
145  };
146 }
147 
148 
void calibrate()
Definition: adxl335.cxx:109
void setZeroZ(float zeroZ)
Definition: adxl335.hpp:99
C++ API for the kxtj3 driver.
Definition: a110x.hpp:29
~ADXL335()
Definition: adxl335.cxx:66
ADXL335(int pinX, int pinY, int pinZ, float aref=ADXL335_DEFAULT_AREF)
Definition: adxl335.cxx:37
void setZeroY(float zeroY)
Definition: adxl335.hpp:92
void setZeroX(float zeroX)
Definition: adxl335.hpp:85
std::vector< float > acceleration()
Definition: adxl335.cxx:102
std::vector< int > values()
Definition: adxl335.cxx:80
API for the ADXL335 3-Axis Analog Accelerometer.
Definition: adxl335.hpp:63