„Arduino Nano“ - „MMA8452Q“ 3 ašių 12 bitų / 8 bitų skaitmeninis akselerometras: 4 žingsniai

„Arduino Nano“ - „MMA8452Q“ 3 ašių 12 bitų / 8 bitų skaitmeninis akselerometras: 4 žingsniai

Turinys:

Anonim

1. Arduino Nano

2. MMA8452Q

LINK:

3. I²C kabelis

LINK:

4. I²C skydas „Arduino Nano“

www.controleverything.com/content/I2C-Master?sku=ANI2C

2 veiksmas: ryšys:

Paimkite I2C skydą „Arduino Nano“ ir švelniai stumkite jį ant Nano kaiščių.

Tada prijunkite vieną I2C kabelio galą prie MMA8452Q jutiklio ir kitą galą prie I2C ekrano.

Ryšiai rodomi aukščiau esančiame paveikslėlyje.

3 veiksmas: kodas:

„MMMA8452Q“ arduino kodą galima atsisiųsti iš „github“ saugyklos - ControlEverythingCommunity

Čia yra nuoroda į tą patį:

http: //github.com/ControlEverythingCommunity/MMA8 …

MMA8452Q duomenų lapą galite rasti čia:

http: //s3.amazonaws.com/controleverything.media/c …

Mes įtraukiame biblioteką „Wire.h“, kad palengvintume jutiklio I2c ryšį su „Arduino“ lenta.

Taip pat galite nukopijuoti kodą iš čia, jis pateikiamas taip:

// Platinama nemokamai licencija.

// Naudokite jį bet kokiu būdu, kurį norite, pelno ar nemokamo, su sąlyga, kad jis atitiktų susijusių darbų licencijas.

// MMA8452Q

// Šis kodas skirtas dirbti su „MMA8452Q_I2CS“ „I2C“ mini moduliu, kurį rasite „ControlEverything.com“.

// http: //www.controleverything.com/content/Accelor …

#include

// MMA8452Q I2C adresas yra 0x1C (28)

#define Addr 0x1C

negaliojantis nustatymas ()

{

// Inicijuoti I2C ryšį kaip MASTER

Wire.begin ();

// Serijinio ryšio inicijavimas, nustatytas perdavimo greitis = 9600

Serial.begin (9600);

// Pradėti I2C transliaciją

Wire.beginTransmission (Addr);

// Pasirinkite kontrolės registrą

Wire.write (0x2A);

// Budėjimo režimas

Wire.write (0x00);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Pradėti I2C transliaciją

Wire.beginTransmission (Addr);

// Pasirinkite kontrolės registrą

Wire.write (0x2A);

// Aktyvus režimas

Wire.write (0x01);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Pradėti I2C transliaciją

Wire.beginTransmission (Addr);

// Pasirinkite kontrolės registrą

Wire.write (0x0E);

// Nustatykite intervalą iki +/- 2g

Wire.write (0x00);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

vėlavimas (300);

}

tuščia kilpa ()

{

nepasirašyti int duomenys 7;

// Prašyti 7 baitų duomenų

Wire.requestFrom (Addr, 7);

// Skaityti 7 baitų duomenų

// staus, xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb

jei (Wire.available () == 7)

{

duomenys 0 = Wire.read ();

duomenys 1 = Wire.read ();

duomenys 2 = Wire.read ();

duomenys 3 = Wire.read ();

duomenys 4 = Wire.read ();

duomenys 5 = Wire.read ();

duomenys 6 = Wire.read ();

}

// Konvertuokite duomenis į 12 bitų

int xAccl = ((duomenys 1 * 256) + duomenys 2) / 16;

jei (xAccl> 2047)

{

xAccl - = 4096;

}

int yAccl = ((duomenys 3 * 256) + duomenys 4) / 16;

jei (yAccl> 2047)

{

yAccl - = 4096;

}

int zAccl = ((duomenys 5 * 256) + duomenys 6) / 16;

jei (zAccl> 2047)

{

zAccl - = 4096;

}

// Išvesties duomenys į serijinį monitorių

Serial.print („Pagreitis X-Axis:“);

Serial.println (xAccl);

Serial.print („pagreitis Y-ašyje“);

Serial.println (yAccl);

Serial.print („Pagreitis Z-ašyje“);

Serial.println (zAccl);

vėlavimas (500);

}

4 veiksmas: programos:

„MMA8452Q“ turi įvairias programas, apimančias „E-Compass“ programas, statinę orientaciją, kuri apima portretą / kraštovaizdį, aukštyn / žemyn, kairėn / dešinėn, nugaros / priekinės padėties identifikavimą, nešiojamąjį kompiuterį, el. orientacijos aptikimas, įskaitant virtualiosios realybės ir žaidimų 3D naudotojo pozicijos grįžtamąjį ryšį, realaus laiko veiklos analizė, pvz., žingsnio matuoklio žingsnių skaičiavimas, laisvojo kritimo aptikimas HDD, nesudėtinga GPS atsarginė kopija ir daug daugiau.