upm  0.3.1
Sensor/Actuator repository for libmraa (v0.7.2)
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 
60  class ADXL335 {
61  public:
70  ADXL335(int pinX, int pinY, int pinZ, float aref=ADXL335_DEFAULT_AREF);
71 
75  ~ADXL335();
76 
82  void setZeroX(float zeroX) { m_zeroX = zeroX; };
83 
89  void setZeroY(float zeroY) { m_zeroY = zeroY; };
90 
96  void setZeroZ(float zeroZ) { m_zeroZ = zeroZ; };
97 
105  void values(int *xVal, int *yVal, int *zVal);
106 
114  void acceleration(float *xAccel, float *yAccel, float *zAccel);
115 
121  void calibrate();
122 
123  private:
124  mraa_aio_context m_aioX;
125  mraa_aio_context m_aioY;
126  mraa_aio_context m_aioZ;
127  float m_aref;
128  float m_zeroX, m_zeroY, m_zeroZ;
129  };
130 }
131 
132 
void calibrate()
Definition: adxl335.cxx:90
void setZeroZ(float zeroZ)
Definition: adxl335.h:96
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:89
void setZeroX(float zeroX)
Definition: adxl335.h:82
void values(int *xVal, int *yVal, int *zVal)
Definition: adxl335.cxx:68
void acceleration(float *xAccel, float *yAccel, float *zAccel)
Definition: adxl335.cxx:75
API for the ADXL335 3-axis Analog Accelerometer.
Definition: adxl335.h:60