Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
„MMA8452Q“yra protingas, mažos galios, trijų ašių, talpinis, mikroprocesorinis akselerometras, turintis 12 bitų skiriamąją gebą. Lanksčios vartotojo programuojamos parinktys pateikiamos naudojant pagreičio matuoklio funkcijas, kurias galima sukonfigūruoti dviem pertraukimo kaiščiais. Jame yra vartotojo pasirinktos visos ± 2 g/± 4 g/± 8 g skalės su aukšto dažnio filtro filtruotais duomenimis, taip pat nefiltruoti duomenys, pasiekiami realiuoju laiku. Štai jo demonstracija su „Arduino nano“.
1 žingsnis: ko jums reikia..
1. „Arduino Nano“
2. MMA8452Q
3. I²C kabelis
4. „I²C Shield“, skirtas „Arduino Nano“
2 veiksmas: prijungimas:
Paimkite „Arduino Nano“I2C skydą ir švelniai stumkite jį per „Nano“kaiščius.
Tada vieną I2C kabelio galą prijunkite prie MMA8452Q jutiklio, o kitą - prie I2C skydo.
Sujungimai parodyti aukščiau esančiame paveikslėlyje.
3 žingsnis: kodas:
MMMA8452Q „arduino“kodą galite atsisiųsti iš mūsų „github“saugyklos- „DCUBE Store“.
Čia yra nuoroda.
Įtraukiame „Wire.h“biblioteką, kad palengvintume jutiklio I2c ryšį su „Arduino“plokšte.
Taip pat galite nukopijuoti kodą iš čia, jis pateikiamas taip:
// Platinama su laisvos valios licencija.
// Naudokite bet kokiu būdu, pelningai ar nemokamai, jei jis atitinka susijusių darbų licencijas.
// MMA8452Q
// Šis kodas skirtas dirbti su „MMA8452Q_I2CS I2C Mini“moduliu.
#įtraukti
// MMA8452Q I2C adresas yra 0x1C (28)
#define Addr 0x1C
negaliojanti sąranka ()
{
// Inicijuoti I2C komunikaciją kaip MASTER
Wire.begin ();
// Inicijuoti serijinį ryšį, nustatyti duomenų perdavimo spartą = 9600
Serial.begin (9600);
// Pradėti I2C perdavimą
Wire.beginTransmission (Addr);
// Pasirinkite valdymo registrą
Wire.write (0x2A);
// Budėjimo režimas
Wire.write (0x00);
// Sustabdyti I2C perdavimą
Wire.endTransmission ();
// Pradėti I2C perdavimą
Wire.beginTransmission (Addr);
// Pasirinkite valdymo registrą
Wire.write (0x2A);
// Aktyvus režimas
Wire.write (0x01);
// Sustabdyti I2C perdavimą
Wire.endTransmission ();
// Pradėti I2C perdavimą
Wire.beginTransmission (Addr);
// Pasirinkite valdymo registrą
Wire.write (0x0E);
// Nustatykite diapazoną į +/- 2g
Wire.write (0x00);
// Sustabdyti I2C perdavimą
Wire.endTransmission ();
vėlavimas (300);
}
tuštumos kilpa ()
{
nepasirašyti int duomenys [7];
// Prašyti 7 baitų duomenų
Wire.requestFrom (Addr, 7);
// Skaityti 7 baitus 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;
}
// Duomenų išvedimas į serijinį monitorių
Serial.print ("pagreitis X ašyje:");
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 žingsnis: programos:
„MMA8452Q“turi įvairias programas, įskaitant „E-kompaso“programas, statinės orientacijos aptikimą, apimantį portreto/kraštovaizdžio, aukštyn/žemyn, kairės/dešinės, galinės/priekinės padėties atpažinimą, nešiojamąjį kompiuterį, el. orientacijos aptikimas, įskaitant virtualios realybės ir žaidimo 3D vartotojo padėties grįžtamąjį ryšį, veiklos analizė realiuoju laiku, pvz., žingsniamatio žingsnių skaičiavimas, laisvojo kritimo aptikimas HDD, negyvos sistemos GPS atsarginė kopija ir daug daugiau.