Yaroslav Barabanov
/
turret_2017
для управления турелью
main.cpp@3:e47c0c98f515, 2017-01-19 (annotated)
- Committer:
- Yar
- Date:
- Thu Jan 19 05:22:19 2017 +0000
- Revision:
- 3:e47c0c98f515
- Parent:
- 0:690effcc5be0
MPU6050
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Yar | 0:690effcc5be0 | 1 | #include "mbed.h" |
Yar | 3:e47c0c98f515 | 2 | //#include "rtos.h" |
Yar | 3:e47c0c98f515 | 3 | #include "main.hpp" |
Yar | 0:690effcc5be0 | 4 | #include <string> |
Yar | 0:690effcc5be0 | 5 | #include "servo.hpp" |
Yar | 0:690effcc5be0 | 6 | #include "uart.hpp" |
Yar | 0:690effcc5be0 | 7 | #include "gun.hpp" |
Yar | 3:e47c0c98f515 | 8 | #include "led_color.hpp" |
Yar | 3:e47c0c98f515 | 9 | #include "mpu6050.hpp" |
Yar | 0:690effcc5be0 | 10 | |
Yar | 3:e47c0c98f515 | 11 | // включим режим тестирования гироскопа и акселерометра |
Yar | 3:e47c0c98f515 | 12 | #define MPU6050_TEST_ENABLED |
Yar | 0:690effcc5be0 | 13 | |
Yar | 0:690effcc5be0 | 14 | using namespace std; |
Yar | 0:690effcc5be0 | 15 | |
Yar | 3:e47c0c98f515 | 16 | DigitalOut my_led(LED1); // светодиод на плате |
Yar | 3:e47c0c98f515 | 17 | StateLed MainStateLed; // для управления индикаторным светодиодом |
Yar | 3:e47c0c98f515 | 18 | Timer t2; // таймер для вывода раз в 0.5 сек данных акселерометра |
Yar | 3:e47c0c98f515 | 19 | int delt_tms = 0; |
Yar | 3:e47c0c98f515 | 20 | int countms = 0; |
Yar | 0:690effcc5be0 | 21 | |
Yar | 0:690effcc5be0 | 22 | int main() { |
Yar | 3:e47c0c98f515 | 23 | disabledGun(); // отключить пушку |
Yar | 3:e47c0c98f515 | 24 | #ifndef MPU6050_TEST_ENABLED |
Yar | 3:e47c0c98f515 | 25 | // инициалирация сервоприводов портит данные с гироскопа и акселерометра |
Yar | 3:e47c0c98f515 | 26 | // поэтому для тестирования гироскопа отключим их |
Yar | 0:690effcc5be0 | 27 | initServo(); |
Yar | 3:e47c0c98f515 | 28 | #endif |
Yar | 3:e47c0c98f515 | 29 | #ifdef MPU6050_TEST_ENABLED |
Yar | 3:e47c0c98f515 | 30 | // инициализируем гироскоп и акселерометр |
Yar | 3:e47c0c98f515 | 31 | initMPU6050(); |
Yar | 3:e47c0c98f515 | 32 | #endif |
Yar | 3:e47c0c98f515 | 33 | // запустим таймер |
Yar | 3:e47c0c98f515 | 34 | t2.start(); |
Yar | 3:e47c0c98f515 | 35 | MainStateLed.setLedGreen(); // установим цвет индикаторного светодиода в зеленый |
Yar | 3:e47c0c98f515 | 36 | // для вывода частоты (показывает 64 Мгц) |
Yar | 3:e47c0c98f515 | 37 | //printf("SystemCoreClock = %d Hz\n\r", HAL_RCC_GetSysClockFreq()); |
Yar | 3:e47c0c98f515 | 38 | wait(2); // ждем две секунды |
Yar | 0:690effcc5be0 | 39 | while (true) { |
Yar | 3:e47c0c98f515 | 40 | #ifdef MPU6050_TEST_ENABLED |
Yar | 3:e47c0c98f515 | 41 | // опросим гироскоп и акселерометр |
Yar | 3:e47c0c98f515 | 42 | mpu6050TimerInterrupt(); |
Yar | 3:e47c0c98f515 | 43 | #endif |
Yar | 3:e47c0c98f515 | 44 | #ifndef MPU6050_TEST_ENABLED |
Yar | 3:e47c0c98f515 | 45 | // обновим обработчик UART |
Yar | 3:e47c0c98f515 | 46 | uartUpdate(); |
Yar | 3:e47c0c98f515 | 47 | #endif |
Yar | 3:e47c0c98f515 | 48 | // проверим, прошло ли 0.5 секунд |
Yar | 3:e47c0c98f515 | 49 | delt_tms = t2.read_ms() - countms; |
Yar | 3:e47c0c98f515 | 50 | if (delt_tms > 500) { |
Yar | 3:e47c0c98f515 | 51 | #ifdef MPU6050_TEST_ENABLED |
Yar | 3:e47c0c98f515 | 52 | // выведем углы |
Yar | 3:e47c0c98f515 | 53 | getMPU6050(); |
Yar | 3:e47c0c98f515 | 54 | #endif |
Yar | 3:e47c0c98f515 | 55 | my_led = !my_led; //мигнем светодиодом |
Yar | 3:e47c0c98f515 | 56 | countms = t2.read_ms(); |
Yar | 3:e47c0c98f515 | 57 | } |
Yar | 0:690effcc5be0 | 58 | } |
Yar | 0:690effcc5be0 | 59 | |
Yar | 0:690effcc5be0 | 60 | } |
Yar | 0:690effcc5be0 | 61 |