Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed MPU6050_2 SDFileSystem3 HCSR04_2
main.cpp
- Committer:
- HARUKIDELTA
- Date:
- 2018-12-22
- Revision:
- 46:ebbe73af073d
- Parent:
- 45:eebdf6fa7b15
File content as of revision 46:ebbe73af073d:
//mbed
#include "mbed.h"
#include "FATFileSystem.h"
#include "SDFileSystem.h"
//C
#include "math.h"
//sensor
#include "MPU6050_DMP6.h"
//#include "MPU9250.h"
//#include "BMP280.h"
#include "hcsr04.h"
//device
#include "sbus.h"
//config
#include "SkipperSv2.h"
#include "falfalla.h"
//other
#include "pid.h"
#define DEBUG_SEMIAUTO 0
#define DEBUG_PRINT_INLOOP 1
#define KP_ELE 15.0 //2.0
#define KI_ELE 0.0
#define KD_ELE 0.0 //0/0
#define KP_RUD 3.0
#define KI_RUD 0.0
#define KD_RUD 0.0
#define KP_AIL 0.1
#define KI_AIL 0.2
#define KD_AIL 0.2
//#define g_AIL_L_Ratio_rightloop 0.5
#define GAIN_CONTROLVALUE_TO_PWM 3.0
#define RIGHT_ROLL -12.0
#define RIGHT_PITCH -10.0 //5.0
#define LEFT_ROLL 12.0
#define LEFT_PITCH -5.0
#define STRAIGHT_ROLL 4.0
#define STRAIGHT_PITCH 3.0
#define TAKEOFF_THR 0.8
#define LOOP_THR 0.6
//#define g_rightloopRUD 1500
#define RIGHT_ROLL_SHORT -12.0
#define RIGHT_PITCH_SHORT -5.0
#define LEFT_ROLL_SHORT 12.0
#define LEFT_PITCH_SHORT -5.0
#define RIGHTLOOPROLL_APPROACH -17.0
#define LEFTLOOPROLL_APPROACH 16.0
#define RIGHTLOOPPITCH_APPROACH -15.0
#define LEFTLOOPPITCH_APPROACH -13.0
#define rightloopROLL2 -10.0
/*#define rightloopRUD 1300 //1250
#define rightloopshortRUD 1250
#define leftloopRUD 1500
#define leftloopshortRUD 1500
#define glideloopRUD 1300
*/
#define AIL_R_correctionrightloop 0
#define AIL_L_correctionrightloop 0
#define AIL_L_correctionrightloopshort 0
#define AIL_L_correctionleftloop -0
#define AIL_L_correctionleftloopshort 0
#define RIGHTLOOP_RUD 1250
#define RIGHTLOOPSHORT_RUD 1250
#define LEFTLOOP_RUD 1500
#define LEFTLOOPSHORT_RUD 1500
#define GLIDELOOP_RUD 1300
#define RIGHTLOOPRUD_APPROACH 1500
#define LEFTLOOPRUD_APPROACH 1500
#define AIL_L_CORRECTION_RIGHTLOOP 0
#define AIL_L_CORRECTION_RIGHTLOOPSHORT 0
#define AIL_L_CORRECTION_LEFTLOOP 0
#define AIL_L_CORRECTION_LEFTLOOPSHORT 0
#define GLIDE_ROLL -12.0
#define GLIDE_PITCH -3.0
#define AIL_L_RatioRising 0.5
#define AIL_L_RatioDescent 2
//コンパスキャリブレーション
//SkipperS2基板
/*
#define MAGBIAS_X -35.0
#define MAGBIAS_Y 535.0
#define MAGBIAS_Z -50.0
*/
//S2v2 1番基板
#define MAGBIAS_X 395.0
#define MAGBIAS_Y 505.0
#define MAGBIAS_Z -725.0
//S2v2 2番基板
/*
#define MAGBIAS_X 185.0
#define MAGBIAS_Y 220.0
#define MAGBIAS_Z -350.0
*/
#define ELEMENT 1
#define LIMIT_STRAIGHT_YAW 5.0
#define THRESHOLD_TURNINGRADIUS_YAW 60.0
#define ALLOWHEIGHT 15
#ifndef PI
#define PI 3.14159265358979
#endif
const int16_t lengthdivpwm = 320;
const int16_t changeModeCount = 6;
SBUS sbus(PA_9, PA_10); //SBUS
PwmOut servo1(PC_6); // TIM3_CH1 //old echo
PwmOut servo2(PC_7); // TIM3_CH2 //PC_7
PwmOut servo3(PB_0); // TIM3_CH3
PwmOut servo4(PB_1); // TIM3_CH4
PwmOut servo5(PB_6); // TIM4_CH1
PwmOut servo6(PB_7); // TIM4_CH2 //old trigger
//PwmOut servo7(PB_8); // TIM4_CH3 //PB_8 new echo
//PwmOut servo8(PB_9); // TIM4_CH4 //new trigger
RawSerial pc(PA_2,PA_3, 115200); //tx,rx.baudrate pin;PA_2=UART2_TX, PA_3=UART2_RX
//RawSerial pc2(PB_6,PB_7, 115200); //sbus確認用
SDFileSystem sd(PB_15, PB_14, PB_13, PB_12, "sd");
DigitalOut led1(PA_0); //黄色のコネクタ
DigitalOut led2(PA_1);
DigitalOut led3(PB_5);
DigitalOut led4(PB_4);
//InterruptIn switch2(PC_14);
MPU6050DMP6 mpu6050(PC_0,&pc); //割り込みピン,シリアルポインタ i2cのピン指定は MPU6050>>I2Cdev.h 内のdefine
HCSR04 usensor(PB_9,PB_8); //trig,echo 9,8
PID pid_AIL(g_kpAIL,g_kiAIL,g_kdAIL);
PID pid_ELE(g_kpELE,g_kiELE,g_kdELE);
PID pid_RUD(g_kpRUD,g_kiRUD,g_kdRUD);
enum Channel{AIL_R, ELE, THR, RUD, DROP, AIL_L, Ch7, Ch8};
enum Angle{ROLL, PITCH, YAW}; //yaw:北を0とした絶対角度
enum OperationMode{StartUp, SemiAuto, RightLoop, LeftLoop, GoStraight, BombwithPC, ZERO, Moebius, Glide};
enum BombingMode{Takeoff, Chicken, Transition, Approach};
enum OutputStatus{Manual, Auto};
static OutputStatus output_status = Manual;
OperationMode operation_mode = StartUp;
BombingMode bombing_mode = Takeoff;
static int16_t autopwm[8] = {1455,1450,1176,1628,1417,1452};
int main(void){
while(1){
printf("Hello World\r\n");
//servo1.period_ms(14);
servo1.pulsewidth_us(1300);
wait(1);
//servo1.period_ms(14);
servo1.pulsewidth_us(1200);
}
}