Commit cb35e55f authored by 957dd's avatar 957dd

优化了大车转向代码

parent 80e4a340
No preview for this file type
......@@ -55,7 +55,7 @@ void car0101_mode_2_back(unsigned char gval) {
void car0101_mode_3_left(unsigned char gval) {
int b=10;
int b=15;
if(gval<45){
car_calculate_L_R(90);
}else if(gval<70){
......@@ -66,7 +66,7 @@ void car0101_mode_3_left(unsigned char gval) {
}
void car0101_mode_4_right(unsigned char gval) {
int b=20;
int b=10;
if(gval<45){
car_calculate_L_R(90);
}else if(gval<70){
......
......@@ -134,13 +134,15 @@ static void tankshot_detectionback(){
if(digitalRead(12)==LOW) {
s_back_status=true;
index=1;
g_device_delay_back_count=0;
delay_ms(100); // 延时 100ms,防止抖动
g_device_delay_back_count=0;
softPwmWrite(27, 0);
set_backshotstatus(false);
my_zlog_info("检测引脚12拉低");
}
if(s_back_status==true&&index==1) tank_delay_shot_back();
if(s_back_status==true&&index==1) {
tank_delay_shot_back();
}
tankshot_detectionback_count++;
if(tankshot_detectionback_count>3000){
softPwmWrite(27, 0);
......
......@@ -176,23 +176,29 @@ void tank_angle_limit_function(){
limit_status = angle_limit();
if(limit_status==LIMIT_LIFT) {
device_gpio_control(g_device_type,5,0);
my_zlog_info("lift limit stop");
if(limit_log_count>100){
my_zlog_info("right limit");
limit_log_count=0;
}
}
else if(limit_status==LIMIT_RIGHT) {
device_gpio_control(g_device_type,7,0);
my_zlog_info("right limit stop");
if(limit_log_count>100){
my_zlog_info("lift limit");
limit_log_count=0;
}
}
if(limit_status==0) {
else if(limit_status==0) {
limit_log_count++;
if(limit_log_count>100){
my_zlog_info("limit stop");
limit_log_count=0;
}
delay_ms(5);
}
delay_ms(8);
}
}
......
......@@ -15,7 +15,7 @@ double tank_angle(){
int angle_limit(){
if(ANGLE_LIMIT_INDEX == 1 ){
int tank_limit_angele = tank_angle();
int tank_limit_angele = (int)tank_angle();
if(tank_limit_angele >=LIFT_LIMIT && tank_limit_angele<=MIDDLE_LIMIT) return 1;
else if(tank_limit_angele >=MIDDLE_LIMIT && tank_limit_angele<=RIGHT_LIMIT) return 2;
return 0;
......
......@@ -5,12 +5,14 @@
#define MIDDLE_LIMIT 180
#define RIGHT_LIMIT 200
#define ANGLE_LIMIT_INDEX 1 //是否开启角度旋转
#define ANGLE_LIMIT_INDEX 1 //是否开启角度限制
double tank_angle();
int angle_limit();
void settank_angle(double angle);
float low_pass_filter_360(float prev_angle, float new_angle, float alpha);
void set_tank_angle_count();//计时
......
......@@ -78,9 +78,14 @@ void angle_mqtt_send() {
char TOPIC_send_angle[26];
static double prev_angle=0;
static double rounded_angle;
rounded_angle =low_pass_filter_360(prev_angle,tank_angle(),0.8);
rounded_angle =low_pass_filter_360(prev_angle,tank_angle(),0.7);
sprintf(TOPIC_send_angle,"dev_rtinfo/%s",mqtt_topic_pure_number());
cJSON_AddStringToObject(root, "type","tank_angle");
if(rounded_angle>160&&rounded_angle<180){
rounded_angle=160;
}else if(rounded_angle<200&&rounded_angle>180){
rounded_angle=200;
}
cJSON_AddNumberToObject(root, "angle",rounded_angle);
char *payload = cJSON_PrintUnformatted(root);
angle_i++;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment