Prog Shield Accelerometer MMA7660

Fra Holstebro HTX Wiki
Skift til: navigering, søgning
3-akset Accelerometer med I2C interface

Det 3 aksede accelerometer kan måle tyngdekraften i et XYZ-koordinatsystem og kan ud fra dette bestemme hvad der er op og ned.

Modulet kan købes ved aliexpress[1]

Software

Softwaren til at hente accelerometer data ligger i denne ZIP-fil. Biblioteket downloades og installeres som beskrevet under Arduinos biblioteker.

Biblioteket indeholder et eksempel der er gennemgået her.

Anvendelsen af softwaren

Som alle andre biblioteker skal der sættes de grundlæggende ting op for at kontakte biblioteket og definere

#include "Wire.h"
#include "MMA7660.h"

Inde i setup() startes den serielle kommunikation, og så skal der sættes gang i Wire-objektet ved hjælp af begin-metoden, og accelerometeret skal initialiseres med init-metoden som vist her:

void setup() {
  Serial.begin(9600);
  Wire.begin();
  
  // init accelerometer
  accel.init();
  
  // wait a while
  delay(100);
}

I loop() hentes data fra Accelerometeret med getValues-metoden, og det placerer X, Y og Z værdierne i egenskaberne x, y og z.

Disse værdier printes

void loop() {
  // get accelerator data
  accel.getValues();
  Serial.print("X: ");Serial.print(accel.x, DEC);Serial.print("\t");
  Serial.print("Y: ");Serial.print(accel.y, DEC);Serial.print("\t");
  Serial.print("Z: ");Serial.println(accel.z, DEC);
  delay(500);
}

Test af programmet

Ved at teste programmet får man følgende output:

X: 6	Y: 63	Z: 45
X: 6	Y: 63	Z: 45
X: 5	Y: 0	Z: 44
X: 5	Y: 0	Z: 44
X: 6	Y: 0	Z: 44
X: 6	Y: 0	Z: 44
X: 6	Y: 63	Z: 44
X: 6	Y: 63	Z: 44
X: 6	Y: 63	Z: 45
X: 6	Y: 63	Z: 45
X: 6	Y: 0	Z: 44
X: 6	Y: 0	Z: 44

Værdierne er de rå AD-tal, der stammer fra en 6-bits AD konverter. Tallet skal ganske givet tolkes som en +/- værdi, så det output der kommer fra 0 - 63 skal tolkes som -32 - 31.

Yderligere muligheder i softwaren

Der ligger yderligere muligheder i klassen man kan anvende, hvis man ønsker andre måder at anvende accelerometeret på:

    uint8_t isPresent(void);

Hardware

Princippet i accelerometeret er beskrevet i databladet[2]

Layout

Accelerometerets placering på programmerings-shieldet kan ses her:
MMA7660-layout.png

Referencer