Raspberry Pi - MPL3115A2 Precision höjdmätare Sensor Java Tutorial (3 / 4 steg)
Steg 3: kod:
Java-kod för MPL3115A2 kan hämtas från vår github repository-ControlEverythingCommunity
Här är länken för samma:
https://github.com/ControlEverythingCommunity/MPL3...
Databladet för MPL3115A2 kan hittas här:
https://s3.amazonaws.com/controleverything.Media/c...
Vi har använt pi4j bibliotek för java-kod, stegen för att installera pi4j på raspberry pi som beskrivs här:
Du kan också kopiera koden från här, det ges enligt följande:
Distribueras med en fri vilja licens.
Använda det något sätt du vill, vinst eller gratis, förutsatt att den passar i licenser av dess tillhörande arbeten.
MPL3115A2
Denna kod är utformad att fungera med MPL3115A2_I2CS I2C Mini modulen tillgänglig från ControlEverything.com.
https://www.controleverything.com/products
import com.pi4j.io.i2c.I2CBus;
import com.pi4j.io.i2c.I2CDevice;
import com.pi4j.io.i2c.I2CFactory;
import java.io.IOException;
allmän klass MPL3115A2
{
public static void main (String args[]) kastar undantag
{
Skapa I2C bussen
I2CBus buss = I2CFactory.getInstance(I2CBus.BUS_1);
Får I2C enheten, MPL3115A2 I2C adress är 0x60(96)
I2CDevice device = Bus.getDevice(0x60);
SELECT-kontrollen register
Aktivt läge, OSR = 128, höjdmätarläget
Device.write (0x26, (byte) 0xB9);
Välj data konfiguration register
Data redo händelse aktiverat för höjd, tryck, temperatur
Device.write (0x13, (byte) 0x07);
SELECT-kontrollen register
Aktivt läge, OSR = 128, höjdmätarläget
Device.write (0x26, (byte) 0xB9);
Thread.Sleep(1000);
Läst 6 byte från adress 0x00(00)
status, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
byte [] data = nya byte [6].
Device.Read (0x00, data, 0, 6);
Konvertera data till 20-bitar
int tHeight = (((data [1] & 0xFF) * 65536) + ((data [2] & 0xFF) * 256) + (data [3] & 0xF0)) / 16);
int temp = ((data [4] * 256) + (data [5] & 0xF0)) / 16;
dubbel höjd = tHeight / 16,0;
Double cTemp = (temp / 16,0);
Double fTemp = cTemp * 1,8 + 32.
SELECT-kontrollen register
Aktivt läge, OSR = 128, barometerläget
Device.write (0x26, (byte) 0x39);
Thread.Sleep(1000);
Läs 4 byte från adress 0x00(00)
status, pres msb1, pres msb, pres lsb
Device.Read (0x00, data, 0, 4);
Konvertera data till 20-bitar
int pres = (((data [1] & 0xFF) * 65536) + ((data [2] & 0xFF) * 256) + (data [3] & 0xF0)) / 16;
dubbelt tryck = (pres / 4.0) / 1000.0;
Utdata till skärm
System.out.printf ("tryck: %.2f kPa %n", pressa);
System.out.printf ("höjd: %.2f m %n", höjd);
System.out.printf ("temperaturen i Celsius: %.2f C %n", cTemp);
System.out.printf ("temperaturen i Fahrenheit: %.2f F %n", fTemp);
}
}