2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
MMA8452Q este un accelerometru inteligent, de mică putere, cu trei axe, capacitiv, micromachined, cu 12 biți de rezoluție. Opțiunile flexibile programabile de utilizator sunt furnizate cu ajutorul funcțiilor încorporate în accelerometru, configurabile pentru doi pini de întrerupere. Are scări complete selectabile de utilizator de ± 2g / ± 4g / ± 8g cu date filtrate cu filtru trecător înalt, precum și date non-filtrate disponibile în timp real. Iată demonstrația sa cu Arduino nano.
Pasul 1: De ce ai nevoie..
1. Arduino Nano
2. MMA8452Q
3. Cablu I²C
4. Scut I²C pentru Arduino Nano
Pasul 2: Conexiune:
Luați un scut I2C pentru Arduino Nano și împingeți-l ușor peste pinii Nano.
Apoi conectați capătul cablului I2C la senzorul MMA8452Q și celălalt capăt la ecranul I2C.
Conexiunile sunt afișate în imaginea de mai sus.
Pasul 3: Cod:
Codul arduino pentru MMMA8452Q poate fi descărcat din depozitul nostru github- Magazin DCUBE.
Iată linkul.
Includem biblioteca Wire.h pentru a facilita comunicarea I2c a senzorului cu placa Arduino.
De asemenea, puteți copia codul de aici, acesta este dat după cum urmează:
// Distribuit cu o licență de liberă voință.
// Folosiți-l în orice mod doriți, profit sau gratuit, cu condiția să se încadreze în licențele lucrărilor sale asociate.
// MMA8452Q
// Acest cod este conceput pentru a funcționa cu Mini-modulul MMA8452Q_I2CS I2C.
#include
// Adresa MMA8452Q I2C este 0x1C (28)
#define Addr 0x1C
configurare nulă ()
{
// Inițializați comunicarea I2C ca MASTER
Wire.begin ();
// Inițializați comunicarea în serie, setați baud rate = 9600
Serial.begin (9600);
// Porniți transmisia I2C
Wire.beginTransmission (Addr);
// Selectați registrul de control
Wire.write (0x2A);
// Mod de asteptare
Wire.write (0x00);
// Opriți transmisia I2C
Wire.endTransmission ();
// Porniți transmisia I2C
Wire.beginTransmission (Addr);
// Selectați registrul de control
Wire.write (0x2A);
// Mod activ
Wire.write (0x01);
// Opriți transmisia I2C
Wire.endTransmission ();
// Porniți transmisia I2C
Wire.beginTransmission (Addr);
// Selectați registrul de control
Wire.write (0x0E);
// Setați intervalul la +/- 2g
Wire.write (0x00);
// Opriți transmisia I2C
Wire.endTransmission ();
întârziere (300);
}
bucla nulă ()
{
date int nesemnate [7];
// Solicitați 7 octeți de date
Wire.requestFrom (Addr, 7);
// Citiți 7 octeți de date
// staus, xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
if (Wire.available () == 7)
{
date [0] = Wire.read ();
date [1] = Wire.read ();
date [2] = Wire.read ();
date [3] = Wire.read ();
date [4] = Wire.read ();
date [5] = Wire.read ();
date [6] = Wire.read ();
}
// Convertiți datele în 12 biți
int xAccl = ((data [1] * 256) + data [2]) / 16;
if (xAccl> 2047)
{
xAccl - = 4096;
}
int yAccl = ((date [3] * 256) + date [4]) / 16;
if (yAccl> 2047)
{
yAccl - = 4096;
}
int zAccl = ((date [5] * 256) + date [6]) / 16;
if (zAccl> 2047)
{
zAccl - = 4096;
}
// Ieșire date pe monitorul serial
Serial.print ("Accelerare în axa X:");
Serial.println (xAccl);
Serial.print ("Accelerare în axa Y:");
Serial.println (yAccl);
Serial.print ("Accelerare în axa Z:");
Serial.println (zAccl);
întârziere (500);
}
Pasul 4: Aplicații:
MMA8452Q are diverse aplicații care includ aplicații E-Compass, detecție statică a orientării care încorporează portret / peisaj, sus / jos, stânga / dreapta, identificare poziție spate / față, notebook, e-reader și detectare de cadere și cădere liberă pentru laptop, în timp real detectarea orientării, inclusiv realitatea virtuală și feedback-ul poziției utilizatorului 3D pentru jocuri, analiza activității în timp real, cum ar fi contorizarea pasului pedometrului, detectarea căderilor gratuite pentru HDD, backup GPS calculat și multe altele.