LBotics.at

Der auf dem Mainboard fix verbaute Orientierungssensor BNO055 kommuniziert mit dem Mikrocontroller auf dem Arduino Nano Board über die I2C Schnittstelle.

Dieser Sensor kann Informationen über die Lage im Raum liefern, indem er Drehbewegungen um alle drei Raumachsen auswerten kann. Diese werden in Anlehnung an die möglichen Bewegungen eines Flugzeuges als yaw (Drehung um die Hochachse), pitch (Drehung um die Querachse) und roll (Drehung um die Längsachse) bezeichnet.

Der Sensor liefert ausgehend von einer waagrechten Position Winkel aus folgenden Bereichen:

yaw: 0 ... 359

pitch: -179 ... 0 ... 179

roll: -179 ... 0 ... 179

Programmbeispiel - Einlesen der Werte des Orientierungssensors

Damit der Sensor verwendet werden kann, muss dieser in der Funktion setup() initialisiert werden. In diesem Beispiel werden die aktuellen Lagewerte ausgelesen und am Display angezeigt.

#include "KeplerOpenBOT.h"
 
uint16_t YawWert;
int16_t RollWert;
int16_t PitchWert;
 
void setup()
{
KeplerOpenBOT_INIT();
WRITE_LCD_CONTRAST(180);
WRITE_I2C_BNO055_INIT();
WRITE_LCD_TEXT(1,1,"YAW:");
WRITE_LCD_TEXT(1,2,"ROLL:");
WRITE_LCD_TEXT(1,3,"PITCH:");
}
 
void loop()
{
YawWert = READ_I2C_BNO055_YAW();
RollWert = READ_I2C_BNO055_ROLL();
PitchWert = READ_I2C_BNO055_PITCH();
WRITE_LCD_INT(7,1,YawWert,4);
WRITE_LCD_INT(7,2,RollWert,4);
WRITE_LCD_INT(7,3,PitchWert,4);
}
Erklärungen zu diesem Programmbeispiel

Zeile 11: WRITE_I2C_BNO055_INIT();

Mit der Funktion WRITE_I2C_BNO055_INIT() wird der IMU Sensor initialisiert und kalibriert. Erst nach Aufruf dieser Funktion, die nach der Funktion KeplerOpenBOT_INIT() aufgerufen werden darf, steht der Sensor zur Verfügung und können Werte von diesem ausgelesen werden.

Zeile 19-21: YawWert = READ_I2C_BNO055_YAW();

Mit den Funktionen READ_I2C_BNO055_YAW(), READ_I2C_BNO055_ROLL() und READ_I2C_BNO055_PITCH() können die aktuellen Werte für die Drehung um die jeweilige Raumachse ausgelesen werden.

Rückgabewert der Funktion READ_I2C_BNO055_YAW(): 0 ... 359

Rückgabewert der Funktion READ_I2C_BNO055_ROLL(): -179 ... 0 ... 179

Rückgabewert der Funktion READ_I2C_BNO055_PITCH(): -179 ... 0 ... 179

Zeile 22-24: WRITE_LCD_INT(7,1,YawWert,4);

Ausgabe der drei Werte für die aktuelle Lage im Raum.