Stap 3: Code:
De java-code voor MPL3115A2 kan worden gedownload van onze github archief-ControlEverythingCommunity
Hier is de link voor hetzelfde:
https://github.com/ControlEverythingCommunity/MPL3...
Het gegevensblad van MPL3115A2 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.
MPL3115A2
Deze code is ontworpen om te werken met de MPL3115A2_I2CS I2C Mini Module beschikbaar vanaf ControlEverything.com.
https://www.controleverything.com/products
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 MPL3115A2
{
openbare statische nietige leiding (Koord args[]) gooit uitzondering
{
I2C bus maken
I2CBus Bus = I2CFactory.getInstance(I2CBus.BUS_1);
Krijg I2C apparaat, MPL3115A2 I2C adres is 0x60(96)
I2CDevice apparaat = Bus.getDevice(0x60);
Besturingselement SELECT register
Actieve modus OSR = 128, hoogtemeter modus
Device.write (0x26, (byte) 0xB9);
Selecteer Configuratie gegevensregister
Gegevens klaar gebeurtenis ingeschakeld voor hoogte, druk, temperatuur
Device.write (0x13, (byte) 0x07);
Besturingselement SELECT register
Actieve modus OSR = 128, hoogtemeter modus
Device.write (0x26, (byte) 0xB9);
Thread.Sleep(1000);
6 bytes aan gegevens van adres 0x00(00) leest
status, tHeight msb1, tHeight msb, tHeight lsb, msb temp, temp lsb
[] bytegegevens = nieuwe byte [6];
Device.Read (0x00, gegevens, 0, 6);
De gegevens converteren naar 20-bits
int. tHeight = (((gegevens [1] & 0xFF) * 65536) + ((gegevens [2] & 0xFF) * 256) + (gegevens [3] & 0xF0)) / 16);
int. temp = ((gegevens [4] * 256) + (gegevens [5] & 0xF0)) / 16;
dubbele hoogte = tHeight / 16.0;
dubbele cTemp = (temp / 16.0);
dubbele fTemp = cTemp * 1.8 + 32;
Besturingselement SELECT register
Actieve modus OSR = 128, barometer modus
Device.write (0x26, (byte) 0x39);
Thread.Sleep(1000);
4 bytes aan gegevens van adres 0x00(00) leest
status, pres msb1, pres msb, pres lsb
Device.Read (0x00, gegevens, 0, 4);
De gegevens converteren naar 20-bits
int pres = (((gegevens [1] & 0xFF) * 65536) + ((gegevens [2] & 0xFF) * 256) + (gegevens [3] & 0xF0)) / 16;
dubbele druk = (pres / 4.0) / 1000.0;
Uitvoergegevens naar scherm
System.out.printf ("druk: %.2f kPa %n", druk);
System.out.printf ("hoogte: %.2f m %n", hoogte);
System.out.printf ("temperatuur in Celsius: %.2f C %n", cTemp);
System.out.printf ("temperatuur in Fahrenheit: %.2f F %n", fTemp);
}
}