Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/Genuino101CurieIMUGyro

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

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


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

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

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

  • Плата Arduino/Genuino 101

Цепь

Genuino101fzz.jpg

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

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

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

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

Код

  1. /*
  2.    Правообладатель – Intel Corporation (2015).  Все права защищены.
  3.  
  4.    Эта библиотека является бесплатной; ее можно распространять
  5.    и/или модифицировать согласно условиям Стандартной общественной
  6.    лицензии ограниченного применения GNU (т.к. она выпущена Фондом
  7.    свободного ПО) – либо версии 2.1 этой лицензии, либо более поздней
  8.    версии (на ваш выбор).
  9.  
  10.    Эта библиотека распространяется в надежде на то, что будет
  11.    полезна кому-либо, но БЕЗО ВСЯКИХ ГАРАНТИЙ – даже без гарантий на
  12.    коммерческое качество и пригодность применения для конкретных
  13.    целей. Более подробно читайте в Стандартной общественной лицензии
  14.    ограниченного применения GNU.
  15.  
  16.    Вы должны получить копию Стандартной общественной лицензии
  17.    ограниченного применения вместе с этой библиотекой. Если не
  18.    получили, напишите в Фонд бесплатного ПО на адрес: Free Software
  19.    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,    
  20.    MA  02110-1301  USA
  21. */
  22.  
  23. /*
  24.    Этот скетч-пример демонстрирует, как можно использовать BMI160
  25.    на модуле Intel Curie для считывания данных с гироскопа
  26. */
  27.  
  28. #include "CurieIMU.h"
  29.  
  30. void setup() {
  31.   Serial.begin(9600); // инициализируем последовательную коммуникацию
  32.   while (!Serial);    // ждем открытия последовательного порта
  33.   // инициализируем IMU-устройство:
  34.   Serial.println("Initializing IMU device...");  //  "Инициализация IMU-устройства..."
  35.   CurieIMU.begin();
  36.  
  37.   // задаем диапазон значений гироскопа на 250 градусов в секунду:
  38.   CurieIMU.setGyroRange(250);
  39. }
  40.  
  41. void loop() {
  42.   int gxRaw, gyRaw, gzRaw;         // переменные для «сырых» значений от гироскопа
  43.   float gx, gy, gz;
  44.  
  45.   // считываем «сырые» данные от гироскопа:
  46.   CurieIMU.readGyro(gxRaw, gyRaw, gzRaw);
  47.  
  48.   // конвертируем эти данные в °/сек:
  49.   gx = convertRawGyro(gxRaw);
  50.   gy = convertRawGyro(gyRaw);
  51.   gz = convertRawGyro(gzRaw);
  52.  
  53.   // показываем данные от гироскопа для осей X, Y и Z, разделяя их запятой:
  54.   Serial.print("g:\t");
  55.   Serial.print(gx);
  56.   Serial.print("\t");
  57.   Serial.print(gy);
  58.   Serial.print("\t");
  59.   Serial.print(gz);
  60.   Serial.println();
  61. }
  62.  
  63. float convertRawGyro(int gRaw) {
  64.   // т.к. мы используем диапазон 250 градусов в секунду
  65.   // «-250» соответствует «сырому» значению «-32768», а
  66.   // «+250» соответствует «сырому» значению «32768»
  67.  
  68.   float g = (gRaw * 250.0) / 32768.0;
  69.  
  70.   return g;
  71. }

См.также

  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

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

  1. Arduino.cc - Arduino/Genuino 101 CurieIMU Gyro