Étape 4:3-Axis Gyroscope mesure à l’aide de Code Java :
L’avantage d’utiliser des framboises pi est, c’est vous offre la flexibilité du langage de programmation dans lequel vous souhaitez programmer le Conseil afin de l’interface du capteur avec elle. Tirer parti de cet avantage de cette carte, nous démontrons ici sa programmation en Java. Le code Java pour BMG160 peut être téléchargé de notre communauté de github c’est la Communauté de contrôle tout.
Ainsi que pour faciliter la tâche des utilisateurs, nous sommes expliquant le code ici aussi : comme la première étape de codage vous devez télécharger la bibliothèque pi4j dans le cas de java, car cette bibliothèque prend en charge les fonctions utilisées dans le code. Donc, pour télécharger la bibliothèque, vous pouvez visiter le lien suivant :
Vous pouvez copier le code de java de travail pour ce capteur d’ici aussi :
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); }}
La bibliothèque qui facilite la communication i2c entre le capteur et le Conseil d’administration est pi4j, ses différents forfaits I2CBus, I2CDevice et I2CFactory permettent d’établir la connexion.
import com.pi4j.io.i2c.I2CBus;import com.pi4j.io.i2c.I2CDevice; import com.pi4j.io.i2c.I2CFactory; import java.io.IOException;
Cette partie du code rend le capteur mesure la vitesse angulaire en écrivant les commandes respectives en utilisant la fonction write() et puis les données sont lues à l’aide de la fonction 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);
Les données reçues du capteur sont converties au format approprié à l’aide de ce qui suit :
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; }
L’affichage se fait à l’aide de la fonction System.out.println(), dans le format suivant.
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);
La sortie du capteur est montrée dans l’image ci-dessus.