Arduino Nano - MMA8452Q 3 tengelyes 12 bites / 8 bites digitális gyorsulásmérő bemutatója: 4 lépés

Arduino Nano - MMA8452Q 3 tengelyes 12 bites / 8 bites digitális gyorsulásmérő bemutatója: 4 lépés

Tartalomjegyzék:

Anonim

1. Arduino Nano

2. MMA8452Q

LINK:

3. I²C kábel

LINK:

4. I²C Shield az Arduino Nano számára

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

2. lépés: Kapcsolat:

Vegyünk egy I2C pajzsot az Arduino Nano-hoz, és óvatosan nyomjuk át a Nano csapjait.

Ezután csatlakoztassa az I2C kábel egyik végét az MMA8452Q érzékelőhöz, a másik végét pedig az I2C árnyékolóhoz.

A kapcsolatok a fenti képen láthatók.

3. lépés: Kód:

Az MMMA8452Q arduino kódja letölthető a github tárolóból - ControlEverythingCommunity

Itt található a hivatkozás:

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

Az MMA8452Q adatlapja itt található:

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

A Wire.h könyvtárat az érzékelő I2c-kommunikációjának megkönnyítésére az Arduino-kártyával egészítjük ki.

A kódot innen is átmásolhatja, az alábbiak szerint adható:

// Szabad licenszel osztva.

// Bármilyen módon, nyereséggel vagy ingyenesen használja, feltéve, hogy illeszkedik a kapcsolódó munkák licencébe.

// MMA8452Q

// Ezt a kódot úgy tervezték, hogy működjön együtt a ControlEverything.com webhelyen elérhető MMA8452Q_I2CS I2C Mini modullal.

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

#include

// MMA8452Q I2C cím 0x1C (28)

#define Addr 0x1C

érvénytelen beállítás ()

{

// I2C kommunikáció inicializálása MASTER-ként

Wire.begin ();

// Soros kommunikáció inicializálása, az átviteli sebesség beállítása = 9600

Serial.begin (9600);

// Indítsa el az I2C továbbítást

Wire.beginTransmission (Addr);

// Válassza ki a vezérlési regisztert

Wire.write (0x2A);

// Készenléti mód

Wire.write (0x00);

// I2C adás leállítása

Wire.endTransmission ();

// Indítsa el az I2C továbbítást

Wire.beginTransmission (Addr);

// Válassza ki a vezérlési regisztert

Wire.write (0x2A);

// Aktív mód

Wire.write (0x01);

// I2C adás leállítása

Wire.endTransmission ();

// Indítsa el az I2C továbbítást

Wire.beginTransmission (Addr);

// Válassza ki a vezérlési regisztert

Wire.write (0x0E);

// Állítsa a tartományt +/- 2 g-ra

Wire.write (0x00);

// I2C adás leállítása

Wire.endTransmission ();

késleltetés (300);

}

érvénytelen hurok ()

{

alá nem írt int adatok 7;

// 7 bájt adat kérése

Wire.requestFrom (Addr, 7);

// 7 bájt adat olvasása

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

ha (Wire.available () == 7)

{

adatok 0 = Wire.read ();

adatok 1 = Wire.read ();

adatok 2 = Wire.read ();

adatok 3 = Wire.read ();

adatok 4 = Wire.read ();

adatok 5 = Wire.read ();

adatok 6 = Wire.read ();

}

// Az adatok konvertálása 12 bitre

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

ha (xAccl> 2047)

{

xAccl - = 4096;

}

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

ha (yAccl> 2047)

{

yAccl - = 4096;

}

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

ha (zAccl> 2047)

{

zAccl - = 4096;

}

// Kimeneti adatok soros monitorra

Serial.print ("Gyorsulás az X-tengelyben");

Serial.println (xAccl);

Serial.print ("Gyorsulás Y-tengelyben");

Serial.println (yAccl);

Serial.print ("Gyorsulás Z-tengelyen");

Serial.println (zAccl);

késleltetés (500);

}

4. lépés: Alkalmazások:

Az MMA8452Q számos olyan alkalmazást tartalmaz, amelyek E-Compass alkalmazásokat, statikus tájolás észlelést tartalmaznak, amelyek tartalmazzák a portré / tájképet, fel / le, balra / jobbra, hátsó / elülső pozíció azonosítását, jegyzetfüzetet, e-olvasót és hordozható számítógépes és szabadonfutási érzékelést, valós időben tájékozódási észlelés, beleértve a virtuális valóságot és a játék 3D-s felhasználói pozíció visszacsatolását, valós idejű aktivitáselemzés, mint például a lépésszámláló lépésszámlálása, a szabadságcsökkenés észlelése a merevlemezen, a GPS-mentés elhúzódása és még sok más.