Étape 3: Code :
Le code de particules de MPL3115A2 peut être téléchargé depuis notre dépôt github-ControlEverythingCommunity
Voici le lien pour la même chose :
https://github.com/ControlEverythingCommunity/MPL3...
Le datasheet du MPL3115A2 peut être trouvé ici :
https://S3.amazonaws.com/controleverything.Media/c...
Nous avons utilisé les deux bibliothèques de code de particules, qui sont application.h et spark_wiring_i2c.h. Spark_wiring_i2c bibliothèque est nécessaire pour faciliter la communication I2C avec le capteur.
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.
MPL3115A2
Copiez le code suivant est conçu pour fonctionner avec le Module MPL3115A2_I2CS I2C Mini, disponible de ControlEverything.com.
https://www.controleverything.com/content/Analog-...
#include < application.h >
#include < spark_wiring_i2c.h >
I2C MPL3115A2 adresse est 0x60(96)
#define Addr 0 x 60
flotteur MTET = 0. 0, fTemp = 0,0, pression = 0,0, altitude = 0.0 ;
int temp = 0, tHeight = 0; long pres = 0 ;
void setup()
{
Définissez la variable
Particle.variable ("i2cdevice", « MPL3115A2 ») ;
Particle.variable ("PMTET", MTET) ;
Particle.variable (« pression », pression) ;
Particle.variable ("altitude", altitude) ;
Initialiser la communication I2C
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(0x26) ;
Mode actif, OSR = 128, mode altimètre
Wire.Write(0xB9) ;
Interrompre la transmission I2C
Wire.endTransmission() ;
Démarrer la transmission I2C
Wire.beginTransmission(Addr) ;
Registre de configuration de données SELECT
Wire.Write(0x13) ;
Données prêt événement activé pour altitude, pression, température
Wire.Write(0x07) ;
Interrompre la transmission I2C
Wire.endTransmission() ;
Delay(300) ;
}
void loop()
{
unsigned int données [6] ;
Démarrer la transmission I2C
Wire.beginTransmission(Addr) ;
Registre de contrôle Select
Wire.Write(0x26) ;
Mode actif, OSR = 128, mode altimètre
Wire.Write(0xB9) ;
Interrompre la transmission I2C
Wire.endTransmission() ;
Delay(1000) ;
Démarrer la transmission I2C
Wire.beginTransmission(Addr) ;
Sélectionner des données de Registre
Wire.Write(0x00) ;
Interrompre la transmission I2C
Wire.endTransmission() ;
Demande 6 octets de données
Wire.requestFrom (Addr, 6) ;
Lire les 6 octets de données de l’adresse 0x00(00)
statut, tHeight msb1, tHeight msb, tHeight lsb, msb temp, temp lsb
if(Wire.available() == 6)
{
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() ;
}
Convertissez les données en 20 bits
tHeight = ((données (long) [1] * 65536 (long)) + (données [2] * 256) + (données [3] & 0xF0)) / 16) ;
Temp = ((données [4] * 256) + (données [5] & 0xF0)) / 16 ;
altitude = tHeight / 16,0 ;
MTET = (temp / 16,0) ;
fTemp = MTET * 1.8 + 32 ;
Démarrer la transmission I2C
Wire.beginTransmission(Addr) ;
Registre de contrôle Select
Wire.Write(0x26) ;
Mode actif, OSR = 128, mode Baromètre
Wire.Write(0x39) ;
Interrompre la transmission I2C
Wire.endTransmission() ;
Démarrer la transmission I2C
Wire.beginTransmission(Addr) ;
Sélectionner des données de Registre
Wire.Write(0x00) ;
Interrompre la transmission I2C
Wire.endTransmission() ;
Delay(1000) ;
Demande 4 octets de données
Wire.requestFrom (Addr, 4) ;
Lire les 4 octets de données
statut, pres msb1, pres msb lsb pres
if(Wire.available() == 4)
{
Data [0] = Wire.read() ;
données [1] = Wire.read() ;
données [2] = Wire.read() ;
données [3] = Wire.read() ;
}
Convertissez les données en 20 bits
PRES = ((données (long) [1] * 65536 (long)) + (données [2] * 256) + (données [3] & 0xF0)) / 16 ;
pression = (pres / 4,0) / 1000.0 ;
Données de sortie au tableau de bord
Particle.Publish (« Altitude: ", String(altitude)) ;
Particle.Publish ("pression:", String(pressure)) ;
Particle.Publish ("température en degrés Celsius:", String(cTemp)) ;
Particle.Publish ("température en degrés Fahrenheit:", String(fTemp)) ;
Delay(1000) ;
}