upm  0.2.0
Sensor/Actuator repository for libmraa (v0.6.1)
adxl335.h
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 <mraa/aio.h>
31 
32 #define ADXL335_DEFAULT_AREF 5.0
33 #define ADXL335_SENSITIVITY 0.25 // 0.25v/g
34 
35 namespace upm {
36 
59  class ADXL335 {
60  public:
69  ADXL335(int pinX, int pinY, int pinZ, float aref=ADXL335_DEFAULT_AREF);
70 
74  ~ADXL335();
75 
81  void setZeroX(float zeroX) { m_zeroX = zeroX; };
82 
88  void setZeroY(float zeroY) { m_zeroY = zeroY; };
89 
95  void setZeroZ(float zeroZ) { m_zeroZ = zeroZ; };
96 
104  void values(int *xVal, int *yVal, int *zVal);
105 
113  void acceleration(float *xAccel, float *yAccel, float *zAccel);
114 
120  void calibrate();
121 
122  private:
123  mraa_aio_context m_aioX;
124  mraa_aio_context m_aioY;
125  mraa_aio_context m_aioZ;
126  float m_aref;
127  float m_zeroX, m_zeroY, m_zeroZ;
128  };
129 }
130 
131 
void calibrate()
Definition: adxl335.cxx:90
void setZeroZ(float zeroZ)
Definition: adxl335.h:95
Definition: a110x.h:29
~ADXL335()
Definition: adxl335.cxx:61
ADXL335(int pinX, int pinY, int pinZ, float aref=ADXL335_DEFAULT_AREF)
Definition: adxl335.cxx:35
void setZeroY(float zeroY)
Definition: adxl335.h:88
void setZeroX(float zeroX)
Definition: adxl335.h:81
void values(int *xVal, int *yVal, int *zVal)
Definition: adxl335.cxx:68
void acceleration(float *xAccel, float *yAccel, float *zAccel)
Definition: adxl335.cxx:75
C++ API for the ADXL335 3-axis Analog Accelerometer.
Definition: adxl335.h:59