Stap 4:3-as gyroscoop meting met behulp van Java-Code:
Het voordeel van het gebruik van de raspberry pi is dat biedt u de flexibiliteit van de programmeertaal waarin u wenst te programmeren van de Raad van bestuur om de interface van de sensor mee. Gebruik te maken van dit voordeel van dit forum, tonen wij hier de programmering in de Java. De code van Java voor BMG160 kan worden gedownload van onze github Gemeenschap die Controle alles Gemeenschap.
Evenals voor het gemak van de gebruikers, we zijn uit te leggen de code hier ook: als de eerste stap van codering u wilt downloaden van de pi4j-bibliotheek in het geval van java, omdat deze bibliotheek de functies die worden gebruikt in de code ondersteunt. Dus, om te downloaden van de bibliotheek kunt u de volgende link bezoeken:
U kunt ook de werkende java code voor deze sensor vanaf hier:
import com.pi4j.io.i2c.I2CBus;import com.pi4j.io.i2c.I2CDevice;import com.pi4j.io.i2c.I2CFactory;import java.io.IOException;public class BMG160{ public static void main(String args[]) throws Exception{ // Create I2C bus I2CBus bus = I2CFactory.getInstance(I2CBus.BUS_1); // Get I2C device, BMG160 I2C address is 0x68(104) I2CDevice device = bus.getDevice(0x68);// Select range register // Configure full scale range, 2000 dps device.write(0x0F, (byte)0x80); // Select bandwidth register // Bandwidth 200 Hz device.write(0x10, (byte)0x04); Thread.sleep(500); // Read 6 bytes of data // xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb byte[] data = new byte[6]; device.read(0x02, data, 0, 6);// Convert 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; } // Output data to screen System.out.printf("X-Axis of Rotation : %d %n", xGyro); System.out.printf("Y-axis of Rotation : %d %n", yGyro); System.out.printf("Z-axis of Rotation : %d %n", zGyro); }}
De bibliotheek die vergemakkelijkt de i2c communicatie tussen de sensor en de Raad van bestuur is pi4j, zijn verschillende pakketten, I2CBus, I2CDevice en I2CFactory helpen de verbinding tot stand brengen.
import com.pi4j.io.i2c.I2CBus;import com.pi4j.io.i2c.I2CDevice; import com.pi4j.io.i2c.I2CFactory; import java.io.IOException;
Dit deel van de code maakt de sensor meet de hoekige tarief door het schrijven van de respectieve opdrachten met behulp van de functie van write() en vervolgens de gegevens worden gelezen met behulp van de functie read().
// Select range register // Configure full scale range, 2000 dps device.write(0x0F, (byte)0x80); // Select bandwidth register // Bandwidth 200 Hz device.write(0x10, (byte)0x04); Thread.sleep(500);// Read 6 bytes of data // xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb byte[] data = new byte[6]; device.read(0x02, data, 0, 6);
De gegevens ontvangen van de sensor wordt geconverteerd naar de juiste indeling met behulp van de volgende:
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; }
De uitvoer wordt afgedrukt met de System.out.println () functie, in de volgende indeling.
System.out.println("X-Axis of Rotation : %d %n", xGyro); System.out.println("Y-axis of Rotation : %d %n", yGyro); System.out.println("Z-axis of Rotation : %d %n", zGyro);
De output van de sensor wordt weergegeven in de afbeelding hierboven.