2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
MMA8452Q është një akselerometër i zgjuar, me fuqi të ulët, me tre boshte, kapacitiv, me mikromakinim me 12 bit rezolucion. Opsionet fleksibile të programueshme të përdoruesit sigurohen me ndihmën e funksioneve të ngulitura në akselerometër, të konfigurueshme në dy kunja ndërprerëse. Ajo ka shkallë të plota të zgjedhshme nga përdoruesi ± 2g/± 4g/± 8g me të dhëna të filtruara me filtër të lartë, si dhe të dhëna të pa filtruara të disponueshme në kohë reale. Këtu është demonstrimi i tij me Arduino nano.
Hapi 1: Ajo që ju nevojitet.. !
1. Arduino Nano
2. MMA8452Q
3. Kabllo I²C
4. Mburoja I²C për Arduino Nano
Hapi 2: Lidhja:
Merrni një mburojë I2C për Arduino Nano dhe shtyjeni butësisht mbi kunjat e Nanos.
Pastaj lidhni njërin skaj të kabllit I2C me sensorin MMA8452Q dhe skajin tjetër me mburojën I2C.
Lidhjet janë treguar në figurën e mësipërme.
Hapi 3: Kodi:
Kodi arduino për MMMA8452Q mund të shkarkohet nga depoja jonë github- Dyqani DCUBE.
Këtu është lidhja.
Ne përfshijmë bibliotekën Wire.h për të lehtësuar komunikimin I2c të sensorit me bordin Arduino.
Ju gjithashtu mund të kopjoni kodin nga këtu, ai jepet si më poshtë:
// Shpërndarë me një licencë me vullnet të lirë.
// Përdoreni atë në çdo mënyrë që dëshironi, fitimprurëse ose falas, me kusht që të përshtatet në licencat e veprave të tij shoqëruese.
// MMA8452Q
// Ky kod është krijuar për të punuar me Mini Modulin MMA8452Q_I2CS I2C.
#përfshi
// Adresa MMA8452Q I2C është 0x1C (28)
#përcaktoni Addr 0x1C
void setup ()
{
// Filloni komunikimin I2C si MASTER
Wire.begin ();
// Filloni Komunikimin Serial, vendosur normën e baudit = 9600
Serial.filloj (9600);
// Filloni Transmetimin I2C
Wire.beginTransmetimi (Addr);
// Zgjidhni regjistrin e kontrollit
Wire.write (0x2A);
// Modaliteti StandBy
Wire.write (0x00);
// Ndaloni Transmetimin I2C
Wire.endTransmission ();
// Filloni Transmetimin I2C
Wire.beginTransmetimi (Addr);
// Zgjidhni regjistrin e kontrollit
Wire.write (0x2A);
// Mënyra aktive
Wire.write (0x01);
// Ndaloni Transmetimin I2C
Wire.endTransmission ();
// Filloni Transmetimin I2C
Wire.beginTransmetimi (Addr);
// Zgjidhni regjistrin e kontrollit
Wire.write (0x0E);
// Vendosni diapazonin në +/- 2g
Wire.write (0x00);
// Ndaloni Transmetimin I2C
Wire.endTransmission ();
vonesë (300);
}
lak void ()
{
të dhëna int të panënshkruara [7];
// Kërkoni 7 bajt të dhëna
Tela. Kërkohet Nga (Addr, 7);
// Lexoni 7 bajt të dhëna
// staus, xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
nëse (Wire.available () == 7)
{
të dhëna [0] = Wire.read ();
të dhëna [1] = Wire.read ();
të dhëna [2] = Wire.read ();
të dhëna [3] = Wire.read ();
të dhëna [4] = Wire.read ();
të dhëna [5] = Wire.read ();
të dhëna [6] = Wire.read ();
}
// Shndërroni të dhënat në 12-bit
int xAccl = ((të dhënat [1] * 256) + të dhënat [2]) / 16;
nëse (xAccl> 2047)
{
xAccl -= 4096;
}
int yAccl = ((të dhënat [3] * 256) + të dhënat [4]) / 16;
nëse (yAccl> 2047)
{
yAccl -= 4096;
}
int zAccl = ((të dhënat [5] * 256) + të dhënat [6]) / 16;
nëse (zAccl> 2047)
{
zAccl -= 4096;
}
// Dalja e të dhënave në monitorin serik
Serial.print ("Përshpejtimi në boshtin X:");
Serial.println (xAccl);
Serial.print ("Përshpejtimi në Boshtin Y:");
Serial.println (yAccl);
Serial.print ("Përshpejtimi në Boshtin Z:");
Serial.println (zAccl);
vonesë (500);
}
Hapi 4: Aplikimet:
MMA8452Q ka aplikacione të ndryshme të cilat përfshijnë aplikacione E-Compass, zbulim të orientimit statik të cilat përfshijnë Portret/Peizazh, Lart/Poshtë, Majtas/Djathtas, Identifikimi i pozicionit mbrapa/përpara, Fletore, lexues elektronik, dhe Laptop Tumble and Freefall Detection, në kohë reale zbulimi i orientimit përfshirë realitetin virtual dhe reagimet e pozicionit të përdoruesit 3D të lojërave, analiza e aktivitetit në kohë reale, të tilla si numërimi i hapave të pedometrit, zbulimi i rënies së rënies së lirë për HDD, kopjimi GPS i llogaritur i vdekur dhe shumë më tepër.