Skip to content

Obu-IntroSat/IntroSatLib

Repository files navigation

Библиотека для взаимодействия с компонентами спутника

Required hardware and software product

  • Библиотека подходит для ArduinoIDE и STM32CubeIDE
  • Библиотека подходит только для контроллеров
    • STM32F1XX
    • STM32F103C8T6

Оглавление

Installation

  • ArduinoIDE: скачайте библиотеку в .zip формате. Через менеджер библиотек ("Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку...") выберете скачанный .zip файл. Библиотека подключена ;)
  • STM32CubeIDE:

Using

  • 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);
    }

Documentation

Класс позволяющий получать данные из акселерометра Находится в пространстве 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() == 1

    float x = accel.X();
    
  • float Y()

    Получение данных из акселерометра по оси y в долях от g, то есть если ускорение по оси y равно $10м\cdot с^{2}$, то accel.Y() == 1

    float x = accel.Y();
    
  • float Z()

    Получение данных из акселерометра по оси z в долях от g, то есть если ускорение по оси z равно $10м\cdot с^{2}$, то accel.Z() == 1

    float 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

Класс позволяющий получать данные из гироскопа

  • Methods

  • float X()

    Получение данных из гироскопа по оси x в град/с

    float x = gyro.X();
  • float Y()

    Получение данных из гироскопа по оси y в град/с

    float x = gyro.Y();
  • float Z()

    Получение данных из гироскопа по оси z в град/с

    float x = gyro.Z();
  • int16_t RawX()

    Получение сырых данных из гироскопа по оси x. Данные никак не преобразуются.

    int16_t x = gyro.RawX();
  • int16_t RawY()

    Получение сырых данных из гироскопа по оси y. Данные никак не преобразуются.

    int16_t x = gyro.RawY();
  • int16_t RawZ()

    Получение сырых данных из гироскопа по оси z. Данные никак не преобразуются.

    int16_t x = gyro.RawZ();
  • FlyWheel

Класс позволяющий управлять скоростью и направлением вращения маховика Находится в пространстве 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);
  • Methods

  • void Init()

    Инициализация платы маховика, нужна для выставления базовых настроек.

    motor.Init();
  • int16_t NeedSpeed(int16_t needSpeed)

    Метод задает скорость вращения маховика. Знак переменной needSpeed определяет направение вращения:

    "+" - вращение против часовой стрелки; "-" - вращение по часовой стрелки.

    motor.NeedSpeed(needSpeed);
  • int16_t CurrentSpeed()

    Метод позволяет считать текущую скорость вращения маховика. Знак полученного числа будет определять текущее направление вращения маховика:

    "+" - вращение против часовой стрелки; "-" - вращение по часовой стрелки.

    motor.CurrentSpeed();

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published