11.4. ReadAccelerometer Arduino Sketch¶
This sketch is used by Exercise: Read Analog Accelerometer.
11.4.1. Full Source Code¶
The full code is all in one file ReadAccelerometer.ino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | // ReadAccelerometer - read a 3-axis analog accelerometer and display the results to the serial port
//
// Copyright (c) 2016, Garth Zeglin. All rights reserved. Licensed under the
// terms of the BSD 3-clause license as included in LICENSE.
//
// This program assumes that:
//
// 1. A three-axis analog accelerometer such as an ADXL335 is attached to A0,
// A1, and A2. Note: this sensor has buffered voltage outputs and can
// simply connect directly to the analog input pins.
//
// 2. The serial console on the Arduino IDE is set to 9600 baud communications speed.
//
// ================================================================================
// Configure the hardware once after booting up. This runs once after pressing
// reset or powering up the board.
void setup()
{
// Initialize the serial UART at 9600 bits per second.
Serial.begin(9600);
}
// ================================================================================
// Run one iteration of the main event loop. The Arduino system will call this
// function over and over forever.
void loop()
{
// Read the accelerations as uncalibrated values.
int x_raw = analogRead(0);
int y_raw = analogRead(1);
int z_raw = analogRead(2);
// The following will rescale the values to be approximately in Earth gravity units.
const int OFFSET = 335;
const float SCALE = 0.013;
float x = (x_raw - OFFSET) * SCALE;
float y = (y_raw - OFFSET) * SCALE;
float z = (z_raw - OFFSET) * SCALE;
// Print the raw outputs.
Serial.print("Raw: X: ");
Serial.print(x_raw);
Serial.print(" Y: ");
Serial.print(y_raw);
Serial.print(" Z: ");
Serial.print(z_raw);
// Print the calibrated outputs.
Serial.print(" Calib: X: ");
Serial.print(x);
Serial.print(" Y: ");
Serial.print(y);
Serial.print(" Z: ");
Serial.println(z); // println appends an end-of-line character
// Delay for a short interval to create a periodic sampling rate.
delay(50);
}
|