Étape 3: Code :
Le code de l’arduino pour MMMA8452Q peut être téléchargé depuis notre dépôt github-ControlEverythingCommunity
Voici le lien pour la même chose :
https://github.com/ControlEverythingCommunity/MMA8...
Le datasheet du MMA8452Q peut être trouvé ici :
https://S3.amazonaws.com/controleverything.Media/c...
Nous incluons la bibliothèque Wire.h de faciliter la communication I2c du capteur avec la carte Arduino.
Vous pouvez également copier le code d’ici, il est affecté comme suit :
Distribué avec une licence libre-arbitre.
Utilisez-le toute façon vous voulez, Profitez ou libre, autant il s’intègre dans les licences de ses ouvrages connexes.
MMA8452Q
Copiez le code suivant est conçu pour fonctionner avec le Module MMA8452Q_I2CS I2C Mini, disponible de ControlEverything.com.
https://www.controleverything.com/content/Accelor...
#include < Wire.h >
I2C MMA8452Q adresse est 0x1C(28)
Addr #define 0x1C
void setup()
{
Initialiser la communication I2C maître
Wire.Begin() ;
Initialiser la Communication série, réglée en bauds = 9600
Serial.Begin(9600) ;
Démarrer la Transmission I2C
Wire.beginTransmission(Addr) ;
Registre de contrôle Select
Wire.Write(0x2A) ;
En mode veille
Wire.Write(0x00) ;
Interrompre la Transmission I2C
Wire.endTransmission() ;
Démarrer la Transmission I2C
Wire.beginTransmission(Addr) ;
Registre de contrôle Select
Wire.Write(0x2A) ;
Mode actif
Wire.Write(0x01) ;
Interrompre la Transmission I2C
Wire.endTransmission() ;
Démarrer la Transmission I2C
Wire.beginTransmission(Addr) ;
Registre de contrôle Select
Wire.Write(0x0E) ;
Définissez la plage à +/-2g
Wire.Write(0x00) ;
Interrompre la Transmission I2C
Wire.endTransmission() ;
Delay(300) ;
}
void loop()
{
unsigned int données [7] ;
Demande 7 octets de données
Wire.requestFrom (Addr, 7) ;
Lu 7 octets de données
staus xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
if(Wire.available() == 7)
{
Data [0] = Wire.read() ;
données [1] = Wire.read() ;
données [2] = Wire.read() ;
données [3] = Wire.read() ;
données [4] = Wire.read() ;
données [5] = Wire.read() ;
données [6] = Wire.read() ;
}
Convertissez les données en 12 bits
int xAccl = ((données [1] * 256) + data[2]) / 16 ;
Si (xAccl > 2047)
{
xAccl-= 4096 ;
}
int yAccl = ((données [3] * 256) + data[4]) / 16 ;
Si (yAccl > 2047)
{
yAccl-= 4096 ;
}
int zAccl = ((données [5] * 256) + data[6]) / 16 ;
Si (zAccl > 2047)
{
zAccl-= 4096 ;
}
Données de sortie à serial monitor
Serial.Print ("accélération dans l’axe des abscisses:") ;
Serial.println(xAccl) ;
Serial.Print ("accélération dans l’axe des ordonnées:") ;
Serial.println(yAccl) ;
Serial.Print ("accélération dans l’axe z:") ;
Serial.println(zAccl) ;
Delay(500) ;
}