upm  0.5.1
Sensor/Actuator repository for libmraa (v0.9.1)
 All Data Structures Files Functions Variables Enumerations Enumerator Macros Groups Pages
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 
61  class ADXL335 {
62  public:
71  ADXL335(int pinX, int pinY, int pinZ, float aref=ADXL335_DEFAULT_AREF);
72 
76  ~ADXL335();
77 
83  void setZeroX(float zeroX) { m_zeroX = zeroX; };
84 
90  void setZeroY(float zeroY) { m_zeroY = zeroY; };
91 
97  void setZeroZ(float zeroZ) { m_zeroZ = zeroZ; };
98 
106  void values(int *xVal, int *yVal, int *zVal);
107 
108 #ifdef SWIGJAVA
109 
114  int *values();
115 #endif
116 
124  void acceleration(float *xAccel, float *yAccel, float *zAccel);
125 
126 #ifdef SWIGJAVA
127 
132  float *acceleration();
133 #endif
134 
139  void calibrate();
140 
141  private:
142  mraa_aio_context m_aioX;
143  mraa_aio_context m_aioY;
144  mraa_aio_context m_aioZ;
145  float m_aref;
146  float m_zeroX, m_zeroY, m_zeroZ;
147  };
148 }
149 
150 
void calibrate()
Definition: adxl335.cxx:113
void setZeroZ(float zeroZ)
Definition: adxl335.h:97
~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.h:90
void setZeroX(float zeroX)
Definition: adxl335.h:83
void values(int *xVal, int *yVal, int *zVal)
Definition: adxl335.cxx:73
void acceleration(float *xAccel, float *yAccel, float *zAccel)
Definition: adxl335.cxx:89
API for the ADXL335 3-Axis Analog Accelerometer.
Definition: adxl335.h:61