⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 autocontrol.c

📁 主要使用codewarrier开发
💻 C
字号:
//*************************************************************************
//*																								                        *
//*			 *************************智能车控制************************		  *
//*																								                        *
//*************************************************************************
#include "includes.h"

#define CENTER_NUMBER 20
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//智能车当前状态。
unsigned char uc_CarState=STATE_STOP;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//模型车当方向和前速度
unsigned int ui_Direction=STEER_DTY_CENTER;
unsigned int ui_Speed=MOTOR_DTY_CENTER;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//传感器检测到的模型车速度。
unsigned int ui_DetectSpeed;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//存储由vGetDomain()计算的黑线中心坐标。
unsigned char uc_CurPointer=0;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  signed int  si_SteerEx;
  signed int  si_MotorEx;

unsigned char uc_SteerKp=30;

//*************************************************************************
//*																								                        *
//*			 *************************自动控制函数**********************		  *
//*																								                        *
//*************************************************************************
void vAutoControl(void)
{

/*  if(sc_CenterEx<3&&sc_CenterEx>-3)
    uc_SteerKp=5;
  else
  {
    uc_SteerKp=23;
  }   */
  
  si_SteerEx=sc_CenterEx*23;
    
  ui_Direction=STEER_DTY_CENTER-si_SteerEx;
    
  if(sc_CenterEx>0)
    si_MotorEx=sc_CenterEx;
  else
    si_MotorEx=-sc_CenterEx;
    
  ui_Speed=1000+(16-ui_DetectSpeed)*65;
    
  if(sc_FarEx>10||sc_FarEx<-10)
  {
    ui_Speed-=150; 
  }
  else
  {
    if(sc_FarEx>5||sc_FarEx<-5)
    {
      ui_Speed-=50;
    }
  }

//*************************************************************************
//限定舵机和直流电机输出量,保证不超出范围。
  if(ui_Direction>STEER_DTY_MAX)
    ui_Direction=STEER_DTY_MAX;
  if(ui_Direction<STEER_DTY_MIN)
    ui_Direction=STEER_DTY_MIN;
  
  if(ui_Speed>MOTOR_DTY_MAX)
    ui_Speed=MOTOR_DTY_MAX;
  if(ui_Speed<MOTOR_DTY_MIN)
    ui_Speed=MOTOR_DTY_MAX;
  
//*************************************************************************
//此处才是真正的输出控制
  STEER_DTY=ui_Direction;   //舵机电机输出控制      
  MOTOR_DTY1=ui_Speed;      //直流电机输出控制
  MOTOR_DTY2=ui_Speed;      //直流电机输出控制
  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -