Arduino:Примеры/Genuino101CurieIMUGyro

Материал из Онлайн справочника
Версия от 12:35, 8 июля 2023; EducationBot (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Считывание данных с гироскопа[1]

Этот пример показывает, как считывать «сырые» данные с гироскопа, а затем конвертировать их в угловую скорость для осей X, Y и Z. Эта информация нужна, чтобы измерить вращательное движение, т.к. если движение будет происходить непрерывно, акселерометр этот показатель измерить не сможет.

Необходимое оборудование

  • Плата Arduino/Genuino 101

Цепь

Никакого дополнительного оборудования для этого примера не нужно.

Наиболее важные части скетча

Библиотека CurieIMU.h, дающая доступ ко всем параметрам, функциям и значениям IMU-чипа платы Arduino/Genuino 101. В этот чип встроены 3-осевой акселерометр и 3-осевой гироскоп. Библиотека Curie IMU является частью ядра платы 101 и загружается вместе с ее ключевыми файлами. В этом примере мы будем считывать «сырые» значения от гироскопа.

Функция float convertRawGyro(int gRaw), конвертирующая «сырые» данные от гироскопа (gRaw) в градусы в секунду (°/сек). Формулу в этой функции нужно подогнать под диапазон значений, заданный в функции setGyroRange.

Код

/*
   Правообладатель – Intel Corporation (2015).  Все права защищены.

   Эта библиотека является бесплатной; ее можно распространять 
   и/или модифицировать согласно условиям Стандартной общественной
   лицензии ограниченного применения GNU (т.к. она выпущена Фондом
   свободного ПО) – либо версии 2.1 этой лицензии, либо более поздней
   версии (на ваш выбор). 

   Эта библиотека распространяется в надежде на то, что будет 
   полезна кому-либо, но БЕЗО ВСЯКИХ ГАРАНТИЙ – даже без гарантий на 
   коммерческое качество и пригодность применения для конкретных 
   целей. Более подробно читайте в Стандартной общественной лицензии
   ограниченного применения GNU. 

   Вы должны получить копию Стандартной общественной лицензии
   ограниченного применения вместе с этой библиотекой. Если не
   получили, напишите в Фонд бесплатного ПО на адрес: Free Software
   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,    
   MA  02110-1301  USA 
*/

/*
   Этот скетч-пример демонстрирует, как можно использовать BMI160
   на модуле Intel Curie для считывания данных с гироскопа 
*/

#include "CurieIMU.h"

void setup() {
  Serial.begin(9600); // инициализируем последовательную коммуникацию
  while (!Serial);    // ждем открытия последовательного порта
  // инициализируем IMU-устройство:
  Serial.println("Initializing IMU device...");  //  "Инициализация IMU-устройства..."
  CurieIMU.begin();

  // задаем диапазон значений гироскопа на 250 градусов в секунду:
  CurieIMU.setGyroRange(250);
}

void loop() {
  int gxRaw, gyRaw, gzRaw;         // переменные для «сырых» значений от гироскопа
  float gx, gy, gz;

  // считываем «сырые» данные от гироскопа:
  CurieIMU.readGyro(gxRaw, gyRaw, gzRaw);

  // конвертируем эти данные в °/сек:
  gx = convertRawGyro(gxRaw);
  gy = convertRawGyro(gyRaw);
  gz = convertRawGyro(gzRaw);

  // показываем данные от гироскопа для осей X, Y и Z, разделяя их запятой:
  Serial.print("g:\t");
  Serial.print(gx);
  Serial.print("\t");
  Serial.print(gy);
  Serial.print("\t");
  Serial.print(gz);
  Serial.println();
}

float convertRawGyro(int gRaw) {
  // т.к. мы используем диапазон 250 градусов в секунду
  // «-250» соответствует «сырому» значению «-32768», а
  // «+250» соответствует «сырому» значению «32768»
  
  float g = (gRaw * 250.0) / 32768.0;

  return g;
}

См.также

  1. Curie IMU Orientation Visualizer
  2. Curie IMU Accelerometer
  3. Curie IMU Accelerometer Orientation
  4. Curie IMU Raw Imu Data Serial
  5. Curie IMU Shock Detect
  6. Curie IMU Step Count
  7. Curie IMU Tap Detect

Внешние ссылки