2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
MMA8452Q on nutikas, väikese võimsusega kolmeteljeline mahtuvuslik mikromeetriga kiirendusmõõtur, millel on 12 bitti eraldusvõime. Kiirendusmõõturi sisseehitatud funktsioonide abil pakutakse paindlikke kasutaja programmeeritavaid valikuid, mis on konfigureeritavad kaheks katkestusnõelaks. Sellel on kasutaja poolt valitavad täisskaalad ± 2g/± 4g/± 8g koos kõrgpääsfiltriga filtreeritud andmetega ja reaalajas saadaval olevate filtreerimata andmetega. Siin on selle demonstratsioon vaarika pi abil, kasutades pythoni koodi.
Samm: mida vajate..
1. Vaarika Pi
2. MMA8452Q
3. I²C kaabel
4. I²C kilp Raspberry Pi jaoks
5. Etherneti kaabel
Samm: ühendused:
Võtke vaarika pi jaoks I2C -kilp ja lükake see õrnalt üle vaarika pi gpio -tihvtide.
Seejärel ühendage I2C kaabli üks ots MMA8452Q anduriga ja teine ots I2C varjestusega.
Ühendage ka Etherneti kaabel pi -ga või võite kasutada WiFi -moodulit.
Ühendused on näidatud ülaltoodud pildil.
3. samm: kood:
Python koodi MMA8452Q jaoks saab alla laadida meie githubi hoidlast- ControlEverythingCommunity
Siin on link.
Oleme python -koodi jaoks kasutanud SMBusi teeki, SMBus -i vaarika pi -le installimise samme kirjeldatakse siin:
pypi.python.org/pypi/smbus-cffi/0.5.1
Siit saate koodi ka kopeerida, see on järgmine:
# Levitatud vabatahtliku litsentsiga.
# Kasutage seda mis tahes viisil, kasumit teenides või tasuta, tingimusel et see sobib sellega seotud teoste litsentsidega.
# MMA8452Q
# See kood on loodud töötama koos MMA8452Q_I2CS I2C minimooduliga.
import smbus
impordi aeg
# Hankige I2C buss
buss = smbus. SMBus (1)
# MMA8452Q aadress, 0x1C (28)
# Valige juhtregister, 0x2A (42)
# 0x00 (00) Ooterežiim
bus.write_byte_data (0x1C, 0x2A, 0x00)
# MMA8452Q aadress, 0x1C (28)
# Valige juhtregister, 0x2A (42)
# 0x01 (01) Aktiivne režiim
bus.write_byte_data (0x1C, 0x2A, 0x01)
# MMA8452Q aadress, 0x1C (28)
# Valige konfiguratsiooniregister, 0x0E (14)
# 0x00 (00) Määrake vahemik +/- 2g
bus.write_byte_data (0x1C, 0x0E, 0x00)
aeg. uni (0,5)
# MMA8452Q aadress, 0x1C (28)
# Lugege andmeid tagasi 0x00 (0), 7 baiti
# Olekuregister, X-telje MSB, X-telje LSB, Y-telje MSB, Y-telje LSB, Z-telje MSB, Z-telje LSB
andmed = bus.read_i2c_block_data (0x1C, 0x00, 7)
# Teisendage andmed
xAccl = (andmed [1] * 256 + andmed [2]) / 16
kui xAccl> 2047:
xAccl -= 4096
yAccl = (andmed [3] * 256 + andmed [4]) / 16
kui yAccl> 2047:
yAccl -= 4096 z
Accl = (andmed [5] * 256 + andmed [6]) / 16
kui zAccl> 2047:
zAccl -= 4096
# Väljastage andmed ekraanile
print "Kiirendus X-teljel: %d" %xAccl
print "Kiirendus Y-teljel: %d" %yAccl
print "Z-telje kiirendus: %d" %zAccl
4. samm: rakendused:
MMA8452Q-l on mitmesuguseid rakendusi, sealhulgas E-kompassirakendusi, staatilise orientatsiooni tuvastamist, mis hõlmab portree/maastikku, üles/alla, vasakule/paremale, tagumise/esiseisundi tuvastamist, sülearvutit, e-lugerit ning sülearvuti trumli ja vabalangemise tuvastamist, reaalajas orienteerumise tuvastamine, sealhulgas virtuaalne reaalsus ja mängude 3D kasutaja positsiooni tagasiside, reaalajas toimuva tegevuse analüüs, nagu sammulugeja sammude loendamine, vabalangemise languse tuvastamine kõvakettale, surnud GPS-i varundamine ja palju muud.