找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4280|回复: 1
打印 上一主题 下一主题
收起左侧

飞思卡尔光电组国赛二等奖程序K60

[复制链接]
跳转到指定楼层
楼主



  1.   *sss
  2.   * @file       main.c
  3.   * @brief      山外K60 平台主程序
  4.   * @author     山外科技
  5.   * @version    v5.0
  6.   * @date       2013-08-28
  7.   */

  8. #include "common.h"
  9. #include "include.h"
  10. /*************定时器*******************/
  11. void PIT0_IRQHandler();
  12. void PIT1_IRQHandler();
  13. void PIT2_IRQHandler();
  14. /*********搜线函数***********************/
  15. void Analysis_Line_1(uint8 *pixel_1);
  16. void maxvar(uint8 *buf,uint16 len,uint8  maxval);
  17. void Analysis_Line_0(uint8 *pixel_0);
  18. void Analysis_Line_3(uint8 *pixel_3);
  19. /*********模式1**************/
  20. void chasu_1();
  21. void sudu_1();
  22. void sudu_control_1();
  23. int32 Direction_PID_1(int16 center_line);
  24. /*********模式2*******************/
  25. void chasu_2();
  26. void sudu_2();
  27. void sudu_control_2();
  28. int32 Direction_PID_2(int16 center_line);
  29. /**********模式3**************************/
  30. void chasu_3();
  31. void sudu_3();
  32. void sudu_control_3();
  33. int32 Direction_PID_3(int16 center_line);
  34. /***********模式4*************************/
  35. void chasu_4();
  36. void sudu_4();
  37. void sudu_control_4();
  38. int32 Direction_PID_4(int16 center_line);
  39. /************模式5************************/
  40. void chasu_5();
  41. void sudu_5();
  42. void sudu_control_5();
  43. int32 Direction_PID_5(int16 center_line);
  44. /************模式6*****************************/
  45. void chasu_6();
  46. void sudu_6();
  47. void sudu_control_6();
  48. int32 Direction_PID_6(int16 center_line);
  49. /***********电机PID输出*******************/
  50. void SpeedPID_l();
  51. void SpeedPID_r();
  52. void motor_r(int out);
  53. void motor_l(int out);
  54. void motor_r0(int out0);
  55. void motor_l0(int out0);
  56. /***************显示设置***************************/
  57. void xianshi();
  58. void Show_information();
  59. void show_par1();
  60. char huodejianzhi();
  61. void set_num();
  62. /****************按键中断*********************************/
  63. void PORTD_IRQHandler(void);        //PORTD端口中断服务函数
  64. void key_handler(void);             //按键按下的测试中断服务函数
  65. /************平均数**********************/
  66. int32 CCD_Average(uint8 *pixel_1);
  67. /****************加速度陀螺仪***************************/
  68. uint16 Get_AD_datav( );
  69. uint16 Get_AD_dataj( );
  70. uint16 zhong_zhi_lv_bo( );
  71. void jiaoduronghe(void);
  72. void get_j_v();
  73. void get_j_v_init();

  74. int expect=0;
  75. int su_du_b=0,D_Last_s_sudu=0;
  76. int shi_bai=0;
  77. int biao_2=0,biao_3=0;
  78. int shi_su=0;
  79. uint8 Obstacle_Counter = 0;
  80. uint8 Obstacle = 0 ;
  81. int  Obstacle_1=0,Z_jian=0;
  82. int   biao_1=0,shi_bu_c=0;
  83. uint8 Track_Type = 0;
  84. int yyan=0;
  85. int j_su1=0,s_ji=0;
  86. int  L_sum=0;
  87. int   tiao_flag=0;
  88. int long_flag=0,Shi_su=0;
  89. /************************坡道变量**************************/
  90. int   h_f=1, Ramp_su=0,Ramp_su0=0,po_flag=0,qie_flag=0, qie_flag0=0,qie_delay=0,qie_delay0=0,jian_delay=0;
  91. int   po_delay=0,p_x=0,p_x_delay=0;
  92. #define N 11

  93. int bu_xun=0;
  94. //定义存储接收CCD图像的数组
  95. /**********************ccd参数***************************/
  96. int32  out_kp, out_kd,direction_pwm;
  97. int  title=0;
  98. int  flag1=1,flag2=0,flag3=1;
  99. int  key_num=0;
  100. int  key_flag=1;
  101. char key;
  102. int   ff=0,ff_flag=0;
  103. int  sx_flag0=0,sx_flag1=0;
  104. //AD变量
  105. int16 AD_averagev=0;
  106. int16 abc=999;

  107. int16 AD_averagej=0;
  108. int16 varv=0,varj=0;

  109. int  AD_flag=0;
  110. int lingpiaoGj=0;             //加速度计初始值 小车平衡时的角度值
  111. int lingpiaoGv=0;             //直立陀螺仪初始值
  112. float jiaodu=0;               //融合后真实角度  
  113. float jifen=0;                //陀螺仪积分
  114. float weifen=0;               //加速度计陀螺仪融合微分         
  115. int16 var[5];

  116. /*路径补偿*/
  117. int lu_jr=0,lu_jl=0,bu_c=0;
  118. int  zhi_d=0;
  119. uint8 Ramp_Flag=0,Ramp_Type=0;
  120. int f_z=30;
  121. int z_flag=0,y_flag=0;
  122. int shi_z=1,shi_q0=0,shi_q1=0;
  123. int16 L_Line_0[5] = {32,32,32,32,32};
  124. int16 R_Line_0[5] = {88,88,88,88,88};
  125. int16 Track_C_Line_0[5] = {64,64,64,64,64};

  126. int16 L_Line_1[5] = {20,20,20,20,20};
  127. int16 R_Line_1[5] = {102,102,102,102};
  128. int16 L_Line_3[5] = {20,20,20,20,20};
  129. int16 R_Line_3[15] = {0,0,0,0,0};

  130. int16 Track_C_Line_1[10] = {64,64,64,64,64};

  131. int16    D_Kp = 0;                                           //为了提高计算效率和控制精度,已放大10倍
  132. int16    D_Kd =10; //6                                        //为了提高计算效率和控制精度,已放大10倍
  133. int16    D_Error = 0;
  134. int16    D_Last_Error =0;
  135. int yu_zhi0=35,yu_zhi1=30,yu_zhi3=30;
  136. float    F_D_Error=0.0;
  137. int16    fd_D_Error=0;

  138. int16    CCD_average_1=0,CCD_average_0=0,CCD_average_00,CCD_average_01,CCD_average_3=0;
  139. int16    D_A=19;//8
  140. int16    D_B=3;
  141. int16    D_D=10;
  142. int16    D_X=9;
  143. int16    D_F=4560;//      3430       3880     4370    4582  4390        4050     4560     5070
  144. int      spa=0;
  145. int      spi=0;
  146. int      C_P=3;
  147. int      C_D=49;
  148. int      T_L=0;
  149. int      H_W=0;
  150. int      D_KP=0;
  151. int     L_cha0=0,L_cha1=0,L_cha2=0;
  152. int      xian=0;
  153. int16    duojiPID_JUDUIZ,duoji_pwm_new_e,duoji_pwm_old_e;
  154. int      duojiPID=0,qian=0,oldduojiPID=0;
  155. //int    D_Center=0;                        //舵机参数已校正
  156. /*****************速度变量****************/

  157. int S_DError_r = 0;
  158. int S_DError_l = 0;

  159. int pwmout_l=0;  
  160. int pwmout_r=0;
  161. int pwmout_l0=0;  
  162. int pwmout_r0=0;
复制代码
剩下的在附件里面

下载:
main.zip (12.92 KB, 下载次数: 72)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:382976 发表于 2019-3-4 13:41 | 只看该作者
3000多行写在了一篇上,看的脑袋疼
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表