Arduino:Примеры/Genuino101CurieIMUGyro
Поддержать проект | Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Содержание
Считывание данных с гироскопа[1]
Этот пример показывает, как считывать «сырые» данные с гироскопа, а затем конвертировать их в угловую скорость для осей X, Y и Z. Эта информация нужна, чтобы измерить вращательное движение, т.к. если движение будет происходить непрерывно, акселерометр этот показатель измерить не сможет.
Необходимое оборудование
- Плата Arduino/Genuino 101
Цепь
Никакого дополнительного оборудования для этого примера не нужно.
Наиболее важные части скетча
Библиотека 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 }
См.также
- Curie IMU Orientation Visualizer
- Curie IMU Accelerometer
- Curie IMU Accelerometer Orientation
- Curie IMU Raw Imu Data Serial
- Curie IMU Shock Detect
- Curie IMU Step Count
- Curie IMU Tap Detect
Внешние ссылки