Stap 3: Code:
De java-code voor ADXL345 kan worden gedownload van onze github archief-ControlEverythingCommunity
Hier is de link voor hetzelfde:
https://github.com/ControlEverythingCommunity/ADXL...
Het gegevensblad van ADXL345 kan hier worden gevonden:
https://S3.amazonaws.com/controleverything.Media/c...
We hebben pi4j bibliotheek voor java code gebruikt, de stappen te installeren pi4j op de raspberry pi is hier beschreven:
U kunt ook de code kopiëren vanaf hier, het wordt als volgt gegeven:
Gedistribueerd met een licentie van de vrije wil.
Gebruik het elke manier wilt u, op de winst of het gratis, mits het past in de licenties van de bijbehorende werken.
ADXL345
Deze code is ontworpen om te werken met de ADXL345_I2CS I2C Mini Module beschikbaar vanaf ControlEverything.com.
https://www.controleverything.com/content/Accelor...
importeren van com.pi4j.io.i2c.I2CBus;
importeren van com.pi4j.io.i2c.I2CDevice;
importeren van com.pi4j.io.i2c.I2CFactory;
importeren van java.io.IOException;
openbare klasse ADXL345
{
openbare statische nietige leiding (Koord args[]) gooit uitzondering
{
I2C bus maken
I2CBus Bus = I2CFactory.getInstance(I2CBus.BUS_1);
Krijg I2C apparaat, apparaat I2C adres is 0x53(83)
I2CDevice apparaat = Bus.getDevice(0x53);
Selecteer bandbreedte tarief info
Normale modus, Output gegevenssnelheid = 100 Hz
Device.write (0x2C, (byte) 0x0A);
Selecteer Power control register
Auto-slaap onbruikbaar
Device.write (0x2D, (byte) 0x08);
Selecteer formaat gegevensregister
Zelftest handicap, 4-draads interface, volledige resolutie, bereik = +/-2g
Device.write (0x31, (byte) 0x08);
Thread.Sleep(500);
Lees 6 bytes aan gegevens
xAccl lsb, xAccl msb yAccl lsb, msb van de yAccl, zAccl lsb, msb zAccl
[] bytegegevens = nieuwe byte [6];
gegevens [0] = (byte)device.read(0x32);
gegevens [1] = (byte)device.read(0x33);
gegevens [2] = (byte)device.read(0x34);
gegevens [3] = (byte)device.read(0x35);
gegevens [4] = (byte)device.read(0x36);
gegevens [5] = (byte)device.read(0x37);
De gegevens converteren naar 10-bits
int. xAccl = ((gegevens [1] & 0x03) * 256 + (gegevens [0] & 0xFF));
if(xAccl > 511)
{
xAccl-= 1024;
}
int. yAccl = ((gegevens [3] & 0x03) * 256 + (gegevens [2] & 0xFF));
if(yAccl > 511)
{
yAccl-= 1024;
}
int. zAccl = ((gegevens [5] & 0x03) * 256 + (gegevens [4] & 0xFF));
if(zAccl > 511)
{
zAccl-= 1024;
}
Uitvoergegevens naar scherm
System.out.printf ("versnelling van de x-as: %d %n", xAccl);
System.out.printf ("versnelling van de y-as: %d %n", yAccl);
System.out.printf ("versnelling in de z-as: %d %n", zAccl);
}
}