十三届电磁三轮运行代码KEA128是一套专为电磁驱动三轮车辆设计的高效能控制程序,通过优化算法提升能源利用率与行驶稳定性。
```
/*******************************************************************************///// oo——NXP2018_PRO——oo//// PART1:初始化区段 /*******************************************************************************
//************************包含的头文件****************************/
#include common.h
#include include.h
#include OLED.h
#include SEEKFREE_18TFT.h
/********************参数定义&设置****************************/
//---------------------------------------------------------------
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//---------------------------------------------------------------
/***********************系统运行参数******************************/
uint8 code_Time_flag = 0; //程序运行时间
/**************************舵机*********************************/
uint8 KP_A = 6, KP_B = 27, KD = 150; //MAIN舵机PID
uint32 DJ_midpoint = 7330; //舵机中值
uint32 DJ_PWM; //输出PWM
/************************速度控制******************************/
uint8 speed_need = 20; //目标速度
uint8 speed_need_Boost = 30; //目标高速
uint8 speed_need_normal = 30; //目标速度
uint8 speed_need_L = 30; //目标弯道
uint8 speed_SW_flag = 1; //速度选择标志
/*************************电机控制******************************/
float Speed_P = 4, Speed_I = 0.15, Speed_D = 1; //MAIN电机PID
uint8 Block_motor_time_flag = 0; //堵转计时标志
uint8 Block_motor_duty_flag = 0; //堵转事件标志
uint8 Block_motor_delay_flag = 0; //堵转弛懈标志
/**************************编码器********************************/
float feed_fix = 10.6; // 编码器修正系数
uint32 Feed_flag = 0; // 编码器采集计数
uint32 Feed_speed = 0; // 编码器采集速度
/***********************摄像头有关参数***************************/
//* 调控参量*/
uint8 img_y_max = 50; // 扫描纵坐标最近值
uint8 img_y_min = 10; // 扫描纵坐标最远值
uint8 img_y_control = 30; // 扫描纵坐标控制值
/*传递参量*/
uint8 imgbuff[CAMERA_SIZE]; // 定义存储接收图像的数组
uint8 img[CAMERA_W * CAMERA_H]; // 摄像头解压数组
uint8 img_x = 40; // 扫描横坐标
uint8 img_y = 30; // 扫描纵坐标
uint8 start_point = 40; //扫描起始点
uint8 mid_point[60]; // 提取的中线
uint8 mid_point_His[10]; // 历史的中线
uint8 left_point[60]; // 左边界
int right_point[60]; // 右边界
uint8 init_len[60]; // 初始化赛道宽度
uint8 point_len[60]; // 实时赛道宽度
uint8 street_len = 0; // 直道长度
uint8 len_His[10]; // 直道长度历史数组
/*圆环补线*/
float L_Cur_K = 0; // 左圆环补线斜率
float R_Cur_K = 0; // 右圆环补线斜率
```