Gränssnitt för 3-axlig gyroskop Sensor BMG160 med Raspberry Pi (4 / 5 steg)
Steg 4:3-Axis gyroskop mätning med hjälp av Java-kod:
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 BMG160 kan hämtas från vår github gemenskap som är Kontroll allt gemenskap.
Samt för att underlätta för användarna, vi förklarar koden här också: som det första steget av kodning behöver 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;
import com.pi4j.io.i2c.I2CFactory;
import java.io.IOException;
allmän klass BMG160
{
public static void main (String args[]) kastar undantag
{
Skapa I2C bussen
I2CBus buss = I2CFactory.getInstance(I2CBus.BUS_1);
Får I2C enheten, BMG160 I2C adress är 0x68(104)
I2CDevice device = bus.getDevice(0x68);
Välj rad register
Konfigurera fullskaligt utbud, 2000 dps
Device.write (0x0F, (byte) 0x80);
Välj bandbredd register
Bandbredd 200 Hz
Device.write (0x10, (byte) 0x04);
Thread.Sleep(500);
Läst 6 byte data
xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb
byte [] data = nya byte [6].
Device.Read (0x02, data, 0, 6);
Konvertera data
int xGyro = ((data [1] & 0xFF) * 256 + (data [0] & 0xFF));
IF(xGyro > 32767)
{
xGyro-= 65536;
}
int yGyro = ((data [3] & 0xFF) * 256 + (data [2] & 0xFF));
IF(yGyro > 32767)
{
yGyro-= 65536;
}
int zGyro = ((data [5] & 0xFF) * 256 + (data [4] & 0xFF));
IF(zGyro > 32767)
{
zGyro-= 65536;
}
Utdata till skärm
System.out.printf ("x-axeln av Rotation: %d %n", xGyro);
System.out.printf ("y-axeln av Rotation: %d %n", yGyro);
System.out.printf ("z-axeln av Rotation: %d %n", zGyro);
}
}
Biblioteket som underlättar i2c kommunikation mellan sensorn och styrelsen är pi4j, dess olika paket I2CBus, I2CDevice och I2CFactory hjälp för att upprätta anslutningen.
import com.pi4j.io.i2c.I2CBus;
import com.pi4j.io.i2c.I2CDevice;
import com.pi4j.io.i2c.I2CFactory;
import java.io.IOException;
Denna del av koden gör sensorn mäter andelen kantiga genom att skriva kommandona respektive med funktionen anropa och sedan data läses med funktionen read().
Välj rad register
Konfigurera fullskaligt utbud, 2000 dps
Device.write (0x0F, (byte) 0x80);
Välj bandbredd register
Bandbredd 200 Hz
Device.write (0x10, (byte) 0x04);
Thread.Sleep(500);
Läst 6 byte data
xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb
byte [] data = nya byte [6].
Device.Read (0x02, data, 0, 6);
Uppgifterna från sensorn konverteras till lämpligt format med hjälp av följande:
int xGyro = ((data [1] & 0xFF) * 256 + (data [0] & 0xFF));
IF(xGyro > 32767)
{
xGyro-= 65536;
}
int yGyro = ((data [3] & 0xFF) * 256 + (data [2] & 0xFF));
IF(yGyro > 32767)
{
yGyro-= 65536;
}
int zGyro = ((data [5] & 0xFF) * 256 + (data [4] & 0xFF));
IF(zGyro > 32767)
{
zGyro-= 65536;
}
Utdata är tryckt med funktionen System.out.println() i följande format.
System.out.println ("x-axeln av Rotation: %d %n", xGyro);
System.out.println ("y-axeln av Rotation: %d %n", yGyro);
System.out.println ("z-axeln av Rotation: %d %n", zGyro);
Produktionen av sensorn visas i bilden ovan.