This example shows how to manage all the functions developed in Waspmote Accelerometer libraries.
File:
"WaspACC_5_completeExample.pde"
/*
* ------Waspmote Accelerator Complete Example--------
*
* Explanation: This example shows how to manage all the functions
* developed in Waspmote Accelerometer libraries.
*
* Copyright (C) 2009 Libelium Comunicaciones Distribuidas S.L.
* http://www.libelium.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
* Version: 0.1
* Design: David Gascón
* Implementation: David Cuartielles, Alberto Bielsa
*/
void setup()
{
ACC.ON();
USB.begin(); // starts using the serial port
}
long timer = 0;
uint8_t ctrl1=0;
uint8_t ctrl2=0;
uint8_t ctrl3=0;
uint8_t status=0;
uint8_t check=0;
uint8_t adcMode=0;
int accX=0;
int accY=0;
int accZ=0;
uint8_t flag=0;
int16_t auxReg=0;
void loop()
{
//----------Check Register-----------------------
// should always answer 0x3A, it is used to check
// the proper functionality of the accelerometer
byte check = ACC.check();
//----------X Values-----------------------
int x_acc = ACC.getX();
//----------Y Values-----------------------
int y_acc = ACC.getY();
//----------Z Values-----------------------
int z_acc = ACC.getZ();
//-------------------------------
USB.print("\n------------------------------\nCheck: 0x");
USB.println(check, HEX);
USB.println("\n \t0X\t0Y\t0Z");
USB.print(" ACC\t");
USB.print(x_acc, DEC);
USB.print("\t");
USB.print(y_acc, DEC);
USB.print("\t");
USB.println(z_acc, DEC);
// Get accelerometer status
status=ACC.getStatus();
USB.print("status: ");
USB.println(status,BIN);
// Get CTRL1 register
ctrl1=ACC.getCTRL1();
USB.print("ctrl1: ");
USB.println(ctrl1,BIN);
// Set CTRL1 register to other value
if(!ACC.setCTRL1(B01010111))
{
// Check the register was changed
ctrl1=ACC.getCTRL1();
USB.print("ctrl1: ");
USB.println(ctrl1,BIN);
}
// Get CTRL2 register
ctrl2=ACC.getCTRL2();
USB.print("ctrl2: ");
USB.println(ctrl2,BIN);
// Set CTRL2 register to other value
if(!ACC.setCTRL2(B00000000))
{
// Check the register was changed
ctrl2=ACC.getCTRL2();
USB.print("ctrl2: ");
USB.println(ctrl2,BIN);
}
// Get CTRL3 register
ctrl3=ACC.getCTRL3();
USB.print("ctrl3: ");
USB.println(ctrl3,BIN);
// Set CTRL3 register to other value
if(!ACC.setCTRL3(B00001000))
{
// Check the register was changed
ctrl3=ACC.getCTRL3();
USB.print("ctrl3: ");
USB.println(ctrl3,BIN);
}
// Another way to write into a register
if(!ACC.writeRegister(ctrlReg3,B00001000))
{
// Another way to read from a register
ctrl3=ACC.readRegister(ctrlReg3);
USB.print("ctrl3: ");
USB.println(ctrl3,BIN);
}
// Get ADC mode: 16 bit or 12 bit mode
adcMode=ACC.getADCmode();
USB.print("adcMode: ");
USB.println(adcMode,DEC);
if(!ACC.setADCmode(0))
{
adcMode=ACC.getADCmode();
USB.print("adcMode: ");
USB.println(adcMode,DEC);
}
delay(2000);
}
You can download the code of this example.