Mätning av Acceleration med H3LIS331DL och Arduino Nano (3 / 4 steg)
Steg 3: Arduino kod för Acceleration mätning:
Kan börja med arduino koden nu.
När du använder modulen sensor med arduino, inkluderar vi Wire.h bibliotek. "Wire" bibliotek innehåller funktioner som underlättar i2c kommunikationen mellan sensorn och arduino styrelsen.
Hela arduino koden ges nedan för att underlätta för användaren:
#include < Wire.h >
H3LIS331DL I2C adress är 0x18(24)
#define Addr 0x18
void setup()
{
Initialisera I2C kommunikation som MASTER
Wire.BEGIN();
Initialisera 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]);
int yAccl = ((data [3] * 256) + data[2]);
int zAccl = ((data [5] * 256) + data[4]);
Utdata till seriell monitor
Serial.Print ("Acceleration i x-axeln:");
Serial.println(xAccl);
Serial.Print ("Acceleration i y-axeln:");
Serial.println(yAccl);
Serial.Print ("Acceleration i z-axeln:");
Serial.println(zAccl);
Delay(300);
}
Allt du behöver göra är bränna koden i arduino och kontrollera dina avläsningar på serieporten. Resultatet visas i bilden ovan.