Библиотека для взаимодействия с компонентами спутника
- Библиотека подходит для ArduinoIDE и STM32CubeIDE
- Библиотека подходит только для контроллеров
- STM32F1XX
- STM32F103C8T6
- ArduinoIDE: скачайте библиотеку в .zip формате. Через менеджер библиотек ("Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку...") выберете скачанный .zip файл. Библиотека подключена ;)
- STM32CubeIDE:
- ArduinoIDE: базовое использование библиотеки
/** Подключение библиотек */
#include <Wire.h>
#include <Accelerometer.h>
/*
* Включение пространства имён библиотеки спутника
* Чтобы постоянно не писать IntroSatLib::
*/
using namespace IntroSatLib;
/** Создание класса акселерометра*/
Accelerometer accel(Wire);
void setup() {
Serial.begin(9600); // Включения Serial для вывода данных
Wire.begin(); // Включение Wire(I2C)
accel.Init(); // Инициализация датчика
delay(1000);
Serial.println("ax, ay, az"); // Для работы плоттера в ArduinoIDE
}
/** Вывод данных в бесконечном цикле*/
void loop() {
Serial.print(accel.X());
Serial.print(" ");
Serial.print(accel.Y());
Serial.print(" ");
Serial.println(accel.Z());
delay(100);
}
Класс позволяющий получать данные из акселерометра Находится в пространстве IntroSatLib Этой строчкой подключается
using namespace IntroSatLib;
Параметры:
- hi2c = I2C интерфейс
- address = необязательный параметр, стандартное значение 0x68. Адрес акселерометра Accelerometer Accelerometer(I2C_HandleTypeDef *hi2c, uint8_t address) (STM32CubeIDE) или Accelerometer Accelerometer(TwoWire &hi2c, uint8_t address) (ArduinoIDE) Создание объекта класса
Для STM32CubeIDE
Accelerometer accel = Accelerometer(&hi2c1, 0x68);
// или
Accelerometer accel = Accelerometer(&hi2c1);
Для ArduinoIDE
Accelerometer accel = Accelerometer(Wire, 0x68);
// или
Accelerometer accel = Accelerometer(Wire);
-
Methods
-
void Init(Scale sensitivity, FilterBandwidth filter)
Инициализация акселерометра, нужна для выставления базовых настроек Оба параметра не являются обязательными Стандартные значения: - sensitivity = Accelerometer::Scale::twoG - filter = Accelerometer::FilterBandwidth::F0021
Зачем нужны? ;) - sensitivity устанавливает чувствительность акселерометра - filter устанавливает аппаратный фильтр в акселерометре
accel.Init(Accelerometer::Scale::sixteenG, Accelerometer::FilterBandwidth::F0005);
или
accel.Init(Accelerometer::Scale::sixteenG);
или
accel.Init();
-
void SetScale(Scale sensitivity)
Устанавливает чувствительность акселерометра Зачем нужны? ;) - sensitivity чувствительность акселерометра
accel.SetScale(Accelerometer::Scale::sixteenG);
-
void SetFilter(FilterBandwidth filter)
Устанавливает внутренний фильтр акселерометра Зачем нужны? ;) - filter частота внутреннего фильтра акселерометра
accel.SetFilter(Accelerometer::FilterBandwidth::F0005);
-
float X()
Получение данных из акселерометра по оси x в долях от g, то есть если ускорение по оси x равно
$10м\cdot с^{2}$ , то accel.X() == 1float x = accel.X();
-
float Y()
Получение данных из акселерометра по оси y в долях от g, то есть если ускорение по оси y равно
$10м\cdot с^{2}$ , то accel.Y() == 1float x = accel.Y();
-
float Z()
Получение данных из акселерометра по оси z в долях от g, то есть если ускорение по оси z равно
$10м\cdot с^{2}$ , то accel.Z() == 1float x = accel.Z();
-
int16_t RawX()
Получение сырых данных из акселерометра по оси x. Данные никак не преобразуются.
int16_t x = accel.RawX();
-
int16_t RawY()
Получение сырых данных из акселерометра по оси y. Данные никак не преобразуются.
int16_t x = accel.RawY();
-
int16_t RawZ()
Получение сырых данных из акселерометра по оси z. Данные никак не преобразуются.
int16_t x = accel.RawZ();
-
Enums
-
Scale
Перечисление нужно для указания разрешения работы акселерометра в человеко понятно виде Обозначение переменной для хранения элемента перечисления
Accelerometer::Scale scale = Accelerometer::Scale::twoG;
Значения в перечислении twoG — диапазон работы в $\plusmn$2g fourG — диапазон работы в $\plusmn$4g eightG — диапазон работы в $\plusmn$8g sixteenG — диапазон работы в $\plusmn$16g
enum { twoG = 0, fourG = 1, eightG = 2, sixteenG = 3, }
-
-
FilterBandwidth
Перечисление нужно для указания разрешения работы акселерометра в человеко понятно виде Обозначение переменной для хранения элемента перечисления
Accelerometer::FilterBandwidth filter = Accelerometer::FilterBandwidth::F0010;
Значения в перечислении
enum { F0218 = 0, F0218b = 1, F0099 = 2, F0045 = 3, F0021 = 4, F0010 = 5, F0005 = 6, F0420 = 7 F1046 = 8, }
-
Gyroscope
Класс позволяющий получать данные из гироскопа
-
Получение данных из гироскопа по оси x в град/с
float x = gyro.X();
-
Получение данных из гироскопа по оси y в град/с
float x = gyro.Y();
-
Получение данных из гироскопа по оси z в град/с
float x = gyro.Z();
-
Получение сырых данных из гироскопа по оси x. Данные никак не преобразуются.
int16_t x = gyro.RawX();
-
Получение сырых данных из гироскопа по оси y. Данные никак не преобразуются.
int16_t x = gyro.RawY();
-
Получение сырых данных из гироскопа по оси z. Данные никак не преобразуются.
int16_t x = gyro.RawZ();
Класс позволяющий управлять скоростью и направлением вращения маховика Находится в пространстве IntroSatLib Этой строчкой подключается
using namespace IntroSatLib;
Создание объекта класса
FlyWheel FlyWheel(I2C_HandleTypeDef *hi2c, uint8_t address) (STM32CubeIDE) или FlyWheel FlyWheel(TwoWire &hi2c, uint8_t address) (ArduinoIDE)
Параметры:
- hi2c = I2C интерфейс
- address = необязательный параметр, стандартное значение 0x38. Адрес платы маховика
Для STM32CubeIDE
FlyWheel motor = FlyWheel(&hi2c1, 0x38);
// или
FlyWheel motor = FlyWheel(&hi2c1);
Для ArduinoIDE
FlyWheel motor = FlyWheel(Wire, 0x38);
// или
FlyWheel motor = FlyWheel(Wire);
-
Инициализация платы маховика, нужна для выставления базовых настроек.
motor.Init();
-
Метод задает скорость вращения маховика. Знак переменной needSpeed определяет направение вращения:
"+" - вращение против часовой стрелки; "-" - вращение по часовой стрелки.
motor.NeedSpeed(needSpeed);
-
Метод позволяет считать текущую скорость вращения маховика. Знак полученного числа будет определять текущее направление вращения маховика:
"+" - вращение против часовой стрелки; "-" - вращение по часовой стрелки.
motor.CurrentSpeed();