Magnetfält mätning med hjälp av HMC5883 och Raspberry Pi (3 / 4 steg)
Steg 3: Javakod att mäta magnetfältet intensitet:
Fördelen med att använda raspberry pi är som ger dig flexibiliteten i det programmera språket som du vill programmera styrelsen för att gränssnittet sensorn med det. Utnyttja denna fördel av denna styrelse, visar vi här sin programmering i Java. Java-kod för HMC5883 kan hämtas från vår github gemenskap som är Kontroll allt gemenskap.
Samt för att underlätta för användarna, förklarar vi koden här också:
Som ett första steg av kodning måste du ladda ner pi4j biblioteket vid java, eftersom detta bibliotek stöder funktioner används i koden. Så, om du vill ladda ner biblioteket kan du besöka följande länk:
Du kan också kopiera arbetar Javakod för denna sensor härifrån:
import com.pi4j.io.i2c.I2CBus;
import com.pi4j.io.i2c.I2CDevice;
mportera com.pi4j.io.i2c.I2CFactory;
import java.io.IOException;
allmän klass HMC5883
{
public static void main (String args[]) kastar undantag
{
Skapa I2C bussen
I2CBus buss = I2CFactory.getInstance(I2CBus.BUS_1);
Får I2C enheten, HMC5883 I2C adress är 0x1E(30)
I2CDevice device = Bus.getDevice(0x1E);
Välj konfigurationen register A
Normala mätning konfiguration, data rate o/p = 0,75 Hz
Device.write (0x00, (byte) 0x60);
Välj läge register
Kontinuerlig mätning läge
Device.write (0x02, (byte) 0x00);
Thread.Sleep(500);
Läst 6 byte data från 0x03(3)
xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb
byte [] data = nya byte [6].
Device.Read (0x03, data, 0, 6);
Konvertera data
int xMag = ((data [0] & 0xFF) * 256 + (data [1] & 0xFF));
IF(xMag > 32767)
{
xMag-= 65536;
}
int zMag = ((data [2] & 0xFF) * 256 + (data [3] & 0xFF));
IF(zMag > 32767)
{
zMag-= 65536;
}
int yMag = ((data [4] & 0xFF) * 256 + (data [5] & 0xFF));
IF(yMag > 32767)
{
yMag-= 65536;
}
Utdata till skärm
System.out.printf ("magnetfält i x-axeln: %d %n", xMag);
System.out.printf ("magnetfält i y-axeln: %d %n", yMag);
System.out.printf ("magnetfält i z-axeln: %d %n", zMag);
}
}
Anropa och read() funktioner används för att skriva kommandon och läsa sensor utdata respektive. Efter del illustrerar läsningen av magnetfält värden.
Läst 6 byte data från 0x03(3)
xMag msb, xMag lsb, zMag msb, zMag lsb, yMag msb, yMag lsb
byte [] data = nya byte [6].
Device.Read (0x03, data, 0, 6);
Resultatet visas i bilden ovan.