久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2033|回復: 1
收起左側

恩智浦攝像頭程序速度 2.5m/s

[復制鏈接]
ID:329533 發表于 2020-1-10 14:26 | 顯示全部樓層 |閱讀模式
恩智浦攝像頭程序 2.5m/s

單片機源程序如下:
  1. /*!
  2. *     COPYRIGHT NOTICE
  3. *     Copyright (c) 2013,山外科技
  4. *     All rights reserved.

  5. *
  6. * @file       main.c
  7. * @brief      山外KL26 平臺主程序
  8. * @author     山外科技
  9. * @version    v5.2
  10. * @date       2014-10-26
  11. */

  12. #include "common.h"
  13. #include "include.h"

  14. extern uint16 sensor_value[6];
  15. extern uint16 normalization_threshold[6];
  16. extern float position_accumulative[15];


  17. int32 var[5];                                           //發送到上位機的數據
  18. float position = 0.0f;                                 //位置偏差
  19. float pwm = 0.0f;                                      //舵機占空比增量
  20. uint32 pwm_duty_now = 0;                                //舵機占空比
  21. uint8 loss_line = 0;                                    //丟線標志位
  22. uint8 loss_line_lock =0;                                //丟線鎖
  23. uint8 circle_sign = 0;                                  //圓環標志
  24. uint8 ramp_sign = 0;                                    //坡道標志
  25. uint8 stop_car_sign = 0;                                //停車標志

  26. uint16 motor_speed = 0;                            //當前電機速度
  27. int16 speed_set = 250;                            //電機目標速度
  28. uint8 speed_rank = 0;                            //速度等級


  29. void pit2IRQHandler(void);                             //定時器中斷函數聲明


  30. /*!
  31. *  @brief      main函數
  32. *  @since      v5.2
  33. */
  34. void main()
  35. {
  36.     int16 gx, gy, gz,ax,ay,az;
  37. //    Sensor_init();
  38. //    Gyroscope_init();
  39. //    servo_motor_init();
  40. //    switch_button_init();
  41. //    motor_init();
  42. //    encoder_init();
  43. //    Servo_pid_init();
  44. //    flash_24c02_init();
  45. //    Senser_normalization_threshold_get();
  46. //    Senser_normalization_threshold_read(normalization_threshold);       //讀取歸一化閥值
  47. //    speed_stall_select();               //速度檔位選擇
  48. //    NVIC_SetPriority(PORTA_IRQn,0);                     //為了防止漏過停車線,將停車用的外部中斷定為最高優先級
  49. //    NVIC_SetPriority(PIT_IRQn,1);
  50. //    pit_init_ms(PIT0,5);                                //初始化定時器中斷,10ms
  51. //    set_vector_handler(PIT_VECTORn , pit2IRQHandler);   //初始化定時器中斷,10ms
  52. //    enable_irq(PIT_IRQn);
  53.     MPU_Init();
  54.     while(1)
  55.     {
  56.         systick_delay_ms(20);
  57.         MPU_Get_Gyroscope(&gx,&gy,&gz);
  58.         MPU_Get_Accelerometer(&ax,&ay,&az);
  59.         printf("%5d   %5d   %5d    %5d    %5d    %5d    %5d\r\n",gx ,gy ,gz,ax,ay,az,MPU_Get_Temperature());
  60.     }
  61. }

  62. void pit2IRQHandler(void)
  63. {
  64.       encoder_get(&motor_speed);
  65.       reed_detection();         //干簧管停車檢測
  66.       Sensor_value_get(sensor_value);
  67.       Senser_normalization(sensor_value);
  68. //      printf("%5d %5d %5d %5d %5d %5d\r\n",sensor_value[0],sensor_value[1],sensor_value[2],sensor_value[3],sensor_value[4],sensor_value[5]);
  69. //      printf("%5d  %d\r\n",sensor_value[0]+sensor_value[2]+sensor_value[3]+sensor_value[5],(int32)(position * 100));      
  70.       position = cal_deviation(sensor_value);
  71.       position = position_filter(position);
  72.       pwm = Servo_pid_cal(position);
  73.       ramp_sign = ramp_deal(sensor_value,position,&motor_speed);                     //坡道處理
  74.       if(ramp_sign == 0)                                                //在坡道上不進行圓環處理
  75.       {
  76.           circle_sign = circle_deal(sensor_value,position,&motor_speed);             //圓環檢測
  77.       }
  78.       /***圓環處理***/
  79.      if(circle_sign == 0)    //沒有檢測到圓環,丟線處理原值
  80.        {
  81.             if(ramp_sign == 0)
  82.             {
  83.                 loss_line_deal(sensor_value , position , LEFT_LOSE_LINE_THRESHOLD , RIGHT_LOSE_LINE_THRESHOLD);
  84.             }            
  85.         }
  86.       else if(circle_sign == 2)    //如果車已經入圓,使用圓內的丟線處理
  87.       {
  88.           loss_line_deal(sensor_value , position , LEFT_LOSE_LINE_THRESHOLD - 10 , RIGHT_LOSE_LINE_THRESHOLD - 10);
  89.        }
  90.       switch(loss_line)
  91.       {
  92.           case 0:
  93.               pwm_duty_now = servo_motor_pwm_set(SERVO_MID - (int)(pwm));
  94.               break;
  95.               
  96.           case 1:
  97.               if(circle_sign == 2)
  98.               {
  99.                   if(((switch_read())&(0x40)) == 0)
  100.                   {
  101.                       position = POSITION_BOUND;
  102.                       pwm_duty_now = servo_motor_pwm_set(SERVO_RIGHT_DEAD_ZONE);
  103.                   }
  104.                   else
  105.                   {
  106.                       position = (-(POSITION_BOUND));
  107.                       pwm_duty_now = servo_motor_pwm_set(SERVO_LEFT_DEAD_ZONE);
  108.                   }
  109.               }
  110.               else
  111.               {
  112.                   loss_line_lock = 1;
  113.                   position = POSITION_BOUND;
  114.                   pwm_duty_now = servo_motor_pwm_set(SERVO_RIGHT_DEAD_ZONE);
  115.               }
  116.               break;
  117.               
  118.           case 2:
  119.               if(circle_sign == 2)
  120.               {
  121.                   if(((switch_read())&(0x40)) == 0)
  122.                   {
  123.                       position = POSITION_BOUND;
  124.                       pwm_duty_now = servo_motor_pwm_set(SERVO_RIGHT_DEAD_ZONE);
  125.                   }
  126.                   else
  127.                   {
  128.                       position = (-(POSITION_BOUND));
  129.                       pwm_duty_now = servo_motor_pwm_set(SERVO_LEFT_DEAD_ZONE);                     
  130.                   }
  131.               }
  132.               else
  133.               {
  134.                   loss_line_lock = 1;
  135.                   position = (-(POSITION_BOUND));
  136.                   pwm_duty_now = servo_motor_pwm_set(SERVO_LEFT_DEAD_ZONE);
  137.               }
  138.               break;
  139.       }
  140.       if((((switch_read()) & (0x80)) == 0) | (stop_car_sign == 1))
  141.       {
  142.           motor_pwm_set(0);
  143.       }
  144.       else
  145.       {
  146.           motor_pwm_set((int32)speed_set);
  147.       }         
  148. //      vcan_scope((uint8_t *)var,sizeof(var));         //虛擬示波器發送數據
  149.       PIT_Flag_Clear(PIT0);
  150. }
復制代碼

iar代碼下載:
8.29 迷你小霸王程序.7z (2.35 MB, 下載次數: 13)
回復

使用道具 舉報

ID:421049 發表于 2021-3-28 13:55 | 顯示全部樓層
請問這是第幾屆的代碼
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 福利视频网站 | av免费网站在线观看 | 日本久久精品视频 | 日本二区在线观看 | 一区二区三区视频在线 | 久久久精品影院 | 亚洲国产成人精品一区二区 | 精品自拍视频 | 精品国产一区二区三区久久久久久 | 中国美女一级黄色片 | 草草在线观看 | 日韩成人av在线 | 黑人巨大精品 | 国产中文字幕在线观看 | 欧美一区二区三区 | 欧美在线视频观看 | 一区二区三区久久 | 午夜精品一区二区三区在线观看 | 蜜臀久久 | 色综合99| 涩涩99 | 成人欧美一区二区 | 91久久精品一区二区二区 | 九九精品网 | 亚洲久久一区 | 精品国产一级 | 国产专区在线 | 黄色一级电影免费观看 | 国产伦一区二区三区四区 | 成人精品国产免费网站 | 超碰精品在线观看 | 操夜夜| 国产福利视频网站 | 日本一区二区三区四区 | 亚洲一区中文字幕在线观看 | 欧美综合国产精品久久丁香 | 久久综合久久自在自线精品自 | 青青激情网| 日韩成人免费av | 亚洲一区二区三区免费在线观看 | 黄色片大全在线观看 |