Mätning av Acceleration med H3LIS331DL och partikel Photon (3 / 4 steg)
Steg 3: Kod för Acceleration mätning:
Kan börja med partikel koden nu.
När du använder modulen sensor med arduino, inkluderar vi application.h och spark_wiring_i2c.h bibliotek. "application.h" och spark_wiring_i2c.h bibliotek innehåller funktioner som underlättar i2c kommunikationen mellan sensorn och partikeln.
Hela partikel koden ges nedan för att underlätta för användaren:
#include < application.h >
#include < spark_wiringg_i2c.h >
H3LIS331DL I2C adress är 0x18(24)
#define Addr 0x18
int xAccl = 0, yAccl = 0, zAccl = 0;
void setup()
{
Variabeln
Particle.Variable ("i2cdevice", "H3LIS331DL");
Particle.Variable ("xAccl", xAccl);
Particle.Variable ("yAccl", yAccl);
Particle.Variable ("zAccl", zAccl);
Initialisera I2C kommunikation som MASTER
Wire.BEGIN();
Initiera seriell kommunikation, ange baudvärde = 9600
Serial.BEGIN(9600);
Starta I2C-överföring
Wire.beginTransmission(Addr);
SELECT-kontrollen registrerar 1
Wire.write(0x20);
Aktiverar X, Y, Z-axeln, effekt på läge, data klassar 50Hz
Wire.write(0x27);
Stoppa I2C sändningen
Wire.endTransmission();
Starta I2C-överföring
Wire.beginTransmission(Addr);
SELECT-kontrollen registrerar 4
Wire.write(0x23);
Ange full skala, +/-100g, kontinuerlig uppdatering
Wire.write(0x00);
Stoppa I2C sändningen
Wire.endTransmission();
Delay(300);
}
void loop()
{
unsigned int data [6].
för (int jag = 0; jag < 6; i ++)
{
Starta I2C-överföring
Wire.beginTransmission(Addr);
Välj dataregister
Wire.write ((40 + i));
Stoppa I2C sändningen
Wire.endTransmission();
Begäran 1 byte av data
Wire.requestFrom (Addr, 1);
Läst 6 byte data
xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb
IF(Wire.available() == 1)
{
data [i] = Wire.read();
}
Delay(300);
}
Konvertera data
int xAccl = ((data [1] * 256) + data[0]);
IF(xAccl > 32767)
{
xAccl-= 65536;
}
int yAccl = ((data [3] * 256) + data[2]);
IF(yAccl > 32767)
{
yAccl-= 65536;
}
int zAccl = ((data [5] * 256) + data[4]);
IF(zAccl > 32767)
{
zAccl-= 65536;
}
Utdata till dashboard
Particle.publish ("Acceleration i x-axeln är:", String(xAccl));
Particle.publish ("Acceleration i y-axeln är:", String(yAccl));
Particle.publish ("Acceleration i z-axeln är:", String(zAccl));
Delay(300);
}
Particle.Variable() funktion skapar variabler för att lagra utdata från sensorn och Particle.publish() funktion visar utdata på instrumentbrädan av webbplatsen.
Sensor utdata visas i bilden ovan som referens.