Tartalomjegyzék:
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); } 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.4. lépés: Alkalmazások: