-
Notifications
You must be signed in to change notification settings - Fork 7
Software
Эта статья отображает текущее состояние кода. Очевидно, что некоторые вещи стоит переделать.
На данный момент для полета необходимы 3 устройства: arduino на квадрокоптере, компьютер с Bluetooth и arduino для джойстика. Джойстик подключается к компьютеру через USB, программа пересылает данные с джойстика на квадрокоптер через Bluetooth и запрашивает состояние.
Используется подход arduino (функции setup, loop), в дальнейшем планируется использование таймеров и прерываний от UART для лучшего распределения времени.
Работа с датчиками реализована через классы Accelerometer и Gyroscope. Класс TimerCount позволяет засечь время между итерациями loop()
Макросы DEBUG_* используются для включения/выключения режимов отладки:
- DEBUG_NO_MOTORS отключает задержку в несколько секунд перед включением. Удобно для отладки кода (без моторов)
- DEBUG_NO_GYROSCOPE отключает запрос данных с гироскопа (возвращаемое значение - (0, 0, 0))
- DEBUG_NO_GYROSCOPE отключает запрос данных с акселлерометра (возвращаемое значение - (0, 0, 0))
- DEBUG_SERIAL включает последовательный порт
- DEBUG_SERIAL_HUMAN включает команды, которые удобно выполнять, используя Serial Monitor (wasd как джойстик, цифры для мощности)
- throttle - вектор длины 1, который содержит данные о запрашиваемом (вручную) наклоне. Зависит от позиции джойстика.
- angle содержит два угла поворота системы координат, связанной с квадрокоптером относительно g.
- angle_period - значение RC для RC-фильтра, который используется для получения угла (angle).
- MController, Accel, Gyro, TCount - указатели на объекты соответствующих классов.
- serial_type - текущий режим работы с последовательным портом. В режиме SERIAL_DEFAULT последовательный порт готов принимать команды, в режим SERIAL_RESTORE производится переход после дополнительного приема данных (например, при получении нескольких байт значений одной величины).
Создаются объекты классов датчиков, инициализируется последовательный порт,