// ПРИМЕР ЧТЕНИЯ ДАННЫХ ГИРОСКОПА:                             // * Строки со звёздочкой являются необязательными.
                                                               //   ГИРОСКОП: измеряет угловую скорость вокруг собственных осей, он определяет воздействие момента внешней силы.
                                                               //   Эти данные можно использовать, например, для включения режима фиксации жесткого диска в случае падения, удара или резкого перемещения ноутбука.
// ССЫЛКИ для ознакомления:                                    //   
// IMU-сенсор на 9 степеней свободы (Trema-модуль V2.0):       //   https://iarduino.ru/shop/Sensory-Datchiki/imu-9.html
// Информация о подключении модулей к шине I2C:                //   https://wiki.iarduino.ru/page/i2c_connection/
// Информация о модуле и описание библиотеки:                  //   https://wiki.iarduino.ru/page/Trema_IMU9/
                                                               //
#define BMX055_DISABLE_BMA                                     // * Не использовать акселерометр (данную строку можно и не писать, но её наличие освобождает память программ за счет неиспользуемого датчика).
#define BMX055_DISABLE_BMM                                     // * Не использовать магнитометр  (данную строку можно и не писать, но её наличие освобождает память программ за счет неиспользуемого датчика).
                                                               //
#include <Wire.h>                                              //   Подключаем библиотеку для работы с аппаратной шиной I2C, до подключения библиотеки iarduino_Position_BMX055.
#include <iarduino_Position_BMX055.h>                          //   Подключаем библиотеку для работы с Trema-модулем IMU 9 DOF.
iarduino_Position_BMX055 sensor(BMG);                          //   Создаём объект sensor указывая что ему требуется работать только с гироскопом.
                                                               //   Если указать параметр BMA - то объект будет работать только с акселерометром.
                                                               //   Если указать параметр BMG - то объект будет работать только с гироскопом.
                                                               //   Если указать параметр BMM - то объект будет работать только с магнитометром.
                                                               //   Если указать параметр BMX - то объект будет работать со всеми датчиками сразу.
void setup(){                                                  // 
     Serial.begin(9600);                                       //   Инициируем передачу данных в монитор последовательного порта на скорости 9600 бит/сек.
     while(!Serial){}                                          // * Ждём готовность Serial к передаче данных в монитор последовательного порта.
     sensor.begin(&Wire); // &Wire1, &Wire2 ...                //   Инициируем работу с гироскопом, так как именно для работы с ним создан объект sensor. Указав ссылку на объект для работы с шиной I2C на которой находится модуль (по умолчанию &Wire).
//   sensor.setScale(BMG_500DPS);                              // * Меняем диапазон измерений до ±500°/с. Возможные значения: BMG_125DPS (по умолчанию), BMG_250DPS, BMG_500DPS, BMG_1000DPS, BMG_2000DPS.
//   sensor.setBandwidths(BMG_64Hz);                           // * Меняем частоту обновления данных на 64Гц. Возможные значения: BMG_12Hz, BMG_23Hz (по умолчанию), BMG_32Hz, BMG_47Hz, BMG_64Hz, BMG_116Hz, BMG_230Hz, BMG_523Hz.
//   sensor.setFastOffset();                                   // * Выполняем калибровку гироскопа после установки нового диапазона измерений или частоты обновления данных.
}                                                              //   Чем выше диапазон и частота, тем ниже точность.
                                                               //
void loop(){                                                   // 
     sensor.read();                                            //   Функция read() читает данные того датчика, для которого был создан объект sensor.
                                                               //   Для объекта работающего с гироскопом, функция read() может принять
                                                               //   один из двух параметров: BMG_DEG_S или BMG_RAD_S.
                                                               //   Если параметра нет, то используется параметр по умолчанию
                                                               //   sensor.read(BMG_DEG_S); читать угловую скорость в °/c. (по умолчанию).
                                                               //   sensor.read(BMG_RAD_S); читать угловую скорость в рад/c.
                                                               //   Данные прочитанные функцией read() сохраняются в переменных axisX, axisY, axisZ.
     Serial.print((String) "X="+sensor.axisX+", ");            //   Выводим угловую скорость вокруг оси X в °/c.
     Serial.print((String) "Y="+sensor.axisY+", ");            //   Выводим угловую скорость вокруг оси Y в °/c.
     Serial.print((String) "Z="+sensor.axisZ+" °/c \r\n");     //   Выводим угловую скорость вокруг оси Z в °/c.
}