Commit 3b8a2211 authored by 957dd's avatar 957dd

加入了坐标滤波器和优化了部分代码

parent 7313d8f8
...@@ -39,8 +39,9 @@ int thread_start_init(ThreadFunc thread_exit_time, ThreadFunc thread_mqtt_beat, ...@@ -39,8 +39,9 @@ int thread_start_init(ThreadFunc thread_exit_time, ThreadFunc thread_mqtt_beat,
//出现意外自动停止 //出现意外自动停止
void *thread_exit_time(void *arg) { void *thread_exit_time(void *arg) {
while(1){
pg0403_serial_run(); pg0403_serial_run();
while(1){
if(get_self_control_index()==false){ if(get_self_control_index()==false){
......
No preview for this file type
...@@ -110,59 +110,76 @@ void car0102_mode_2_back(unsigned char gval) { ...@@ -110,59 +110,76 @@ void car0102_mode_2_back(unsigned char gval) {
} }
void car0102_mode_3_left(unsigned char gval) { void car0102_mode_3_left(unsigned char gval) {
if (gval < 45) { int b=7;
if(gval<45){
car0102_calculate_L_R(90); car0102_calculate_L_R(90);
} else if (gval <= 51) { }else if(gval<70){
car0102_calculate_L_R(110); car0102_calculate_L_R(50+gval+b);
} else if (gval <= 57) { }else if(gval>=70){
car0102_calculate_L_R(120); car0102_calculate_L_R(135);
} else if (gval <= 63) {
car0102_calculate_L_R(130);
} else if (gval <= 69) {
car0102_calculate_L_R(130);
} else if (gval <= 75) {
car0102_calculate_L_R(140);
} else if (gval <= 81) {
car0102_calculate_L_R(145);
} else if (gval <= 87) {
car0102_calculate_L_R(150);
} else if (gval <= 93) {
car0102_calculate_L_R(150);
} else if (gval <= 100) {
car0102_calculate_L_R(160);
}else if (gval <= 107) {
car0102_calculate_L_R(170);
}else if (gval <= 120) {
car0102_calculate_L_R(180);
} }
// if (gval < 45) {
// car0102_calculate_L_R(90);
// } else if (gval <= 51) {
// car0102_calculate_L_R(110);
// } else if (gval <= 57) {
// car0102_calculate_L_R(120);
// } else if (gval <= 63) {
// car0102_calculate_L_R(130);
// } else if (gval <= 69) {
// car0102_calculate_L_R(135);
// } else if (gval <= 75) {
// car0102_calculate_L_R(140);
// } else if (gval <= 81) {
// car0102_calculate_L_R(145);
// } else if (gval <= 87) {
// car0102_calculate_L_R(150);
// } else if (gval <= 93) {
// car0102_calculate_L_R(150);
// } else if (gval <= 100) {
// car0102_calculate_L_R(160);
// }else if (gval <= 107) {
// car0102_calculate_L_R(170);
// }else if (gval <= 120) {
// car0102_calculate_L_R(180);
// }
} }
void car0102_mode_4_right(unsigned char gval) { void car0102_mode_4_right(unsigned char gval) {
if (gval < 45) { int b=5;
if(gval<45){
car0102_calculate_L_R(90); car0102_calculate_L_R(90);
} else if (gval <= 51) { }else if(gval<70){
car0102_calculate_L_R(70); car0102_calculate_L_R(130-gval-b);
} else if (gval <= 57) { }else if(gval>=70){
car0102_calculate_L_R(66); car0102_calculate_L_R(135);
} else if (gval <= 63) {
car0102_calculate_L_R(62);
} else if (gval <= 69) {
car0102_calculate_L_R(55);
} else if (gval <= 75) {
car0102_calculate_L_R(45 );
} else if (gval <= 81) {
car0102_calculate_L_R(40);
} else if (gval <= 87) {
car0102_calculate_L_R(30);
} else if (gval <= 93) {
car0102_calculate_L_R(30);
} else if (gval <= 100) {
car0102_calculate_L_R(20);
} else if (gval <= 107) {
car0102_calculate_L_R(10);
} else if (gval <= 120) {
car0102_calculate_L_R(0);
} }
// if (gval < 45) {
// car0102_calculate_L_R(90);
// } else if (gval <= 51) {
// car0102_calculate_L_R(70);
// } else if (gval <= 57) {
// car0102_calculate_L_R(66);
// } else if (gval <= 63) {
// car0102_calculate_L_R(62);
// } else if (gval <= 69) {
// car0102_calculate_L_R(55);
// } else if (gval <= 75) {
// car0102_calculate_L_R(45 );
// } else if (gval <= 81) {
// car0102_calculate_L_R(40);
// } else if (gval <= 87) {
// car0102_calculate_L_R(30);
// } else if (gval <= 93) {
// car0102_calculate_L_R(30);
// } else if (gval <= 100) {
// car0102_calculate_L_R(20);
// } else if (gval <= 107) {
// car0102_calculate_L_R(10);
// } else if (gval <= 120) {
// car0102_calculate_L_R(0);
// }
} }
//车速度和转向引脚数值处理函数 //车速度和转向引脚数值处理函数
......
...@@ -352,10 +352,9 @@ int pg0403_serial_run(){ ...@@ -352,10 +352,9 @@ int pg0403_serial_run(){
while(1){ while(1){
static int send_mqtt_count=0; static int send_mqtt_count=0;
int n = read(pg_serial.fd, rx_buffer, sizeof(rx_buffer)); int n = read(pg_serial.fd, rx_buffer, sizeof(rx_buffer));
if(n>0)process_serial_data(rx_buffer, n); process_serial_data(rx_buffer, n);
else delay_ms(100);
if(send_mqtt_count>40){ if(send_mqtt_count>50){
pg0403_all_serial_send(); pg0403_all_serial_send();
send_mqtt_count=0; send_mqtt_count=0;
} }
......
...@@ -85,6 +85,8 @@ void tank_shot_back_stop_task_function(void *arg) { ...@@ -85,6 +85,8 @@ void tank_shot_back_stop_task_function(void *arg) {
delay_ms(1); delay_ms(1);
} }
delay_ms(10);
} }
} }
......
...@@ -146,44 +146,43 @@ int device_shoting_check(int pin,int val){ ...@@ -146,44 +146,43 @@ int device_shoting_check(int pin,int val){
} }
} }
#define LIMIT_LIFT 1
#define LIMIT_RIGHT 2
static int limit_status=0;
/* /*
* @brief 坦克限位线程函数*/ * @brief 坦克限位线程函数*/
void tank_angle_limit_function(void *arg_gpio){ void tank_angle_limit_function(){
static int limit_log_count=0; static int limit_log_count=0;
if (arg_gpio != NULL) {
free(arg_gpio);
}
my_zlog_info("limit task started."); my_zlog_info("limit task started.");
while(1){ while(1){
int limit_status = angle_limit(); limit_status = angle_limit();
if(limit_status==1) { if(limit_status==LIMIT_LIFT) {
device_gpio_control(g_device_type,5,0); device_gpio_control(g_device_type,5,0);
my_zlog_info("lift limit stop"); my_zlog_info("lift limit stop");
} }
else if(limit_status==2) { else if(limit_status==LIMIT_RIGHT) {
device_gpio_control(g_device_type,7,0); device_gpio_control(g_device_type,7,0);
my_zlog_info("right limit stop"); my_zlog_info("right limit stop");
} }
else if(limit_status==0) {
delay_ms(5); if(limit_status==0) {
limit_log_count++; limit_log_count++;
if(limit_log_count>=400){ if(limit_log_count>100){
my_zlog_info("limit stop"); my_zlog_info("limit stop");
limit_log_count=0; limit_log_count=0;
} }
} }
delay_ms(8);
} }
free(arg_gpio);
} }
/*角度限位线程池初始化*/ /*角度限位线程池初始化*/
void device_gpio_control_threadpoll_init(){ void device_gpio_control_threadpoll_init(){
int *arg_gpio = malloc(sizeof(int));
my_zlog_info("device_gpio_control_threadpoll_init start"); my_zlog_info("device_gpio_control_threadpoll_init start");
*arg_gpio = 2;
g_pool_device_gpio_control_t = thread_pool_init(1,1); g_pool_device_gpio_control_t = thread_pool_init(1,1);
thread_pool_add_task(g_pool_device_gpio_control_t, tank_angle_limit_function, arg_gpio); thread_pool_add_task(g_pool_device_gpio_control_t, tank_angle_limit_function, NULL);
} }
/*设备拉低引脚结构体数组*/ /*设备拉低引脚结构体数组*/
...@@ -475,6 +474,15 @@ void tank0202_pwm_value(int pin,int value) { //软件陪我们控制调速 ...@@ -475,6 +474,15 @@ void tank0202_pwm_value(int pin,int value) { //软件陪我们控制调速
softPwmWrite(pin, 30); softPwmWrite(pin, 30);
my_zlog_info("pwm:%d",pin); my_zlog_info("pwm:%d",pin);
} }
if(limit_status==LIMIT_LIFT) {
softPwmWrite(5, 0);
//device_gpio_control(g_device_type,5,0);
my_zlog_info("lift limit stop");
}else if(limit_status==LIMIT_RIGHT) {
softPwmWrite(7, 0);
//device_gpio_control(g_device_type,7,0);
my_zlog_info("right limit stop");
}
}else if(value==0) { }else if(value==0) {
softPwmWrite(pin, 0); softPwmWrite(pin, 0);
...@@ -500,6 +508,16 @@ void tank0203_pwm_value(int pin,int value) { //软件陪我们控制调速 ...@@ -500,6 +508,16 @@ void tank0203_pwm_value(int pin,int value) { //软件陪我们控制调速
softPwmWrite(pin, 30); softPwmWrite(pin, 30);
my_zlog_info("pwm:%d",pin); my_zlog_info("pwm:%d",pin);
} }
if(limit_status==LIMIT_LIFT) {
softPwmWrite(5, 0);
//device_gpio_control(g_device_type,5,0);
my_zlog_info("lift limit stop");
}else if(limit_status==LIMIT_RIGHT) {
softPwmWrite(7, 0);
//device_gpio_control(g_device_type,7,0);
my_zlog_info("right limit stop");
}
}else if(value==0) { }else if(value==0) {
softPwmWrite(pin, 0); softPwmWrite(pin, 0);
...@@ -532,6 +550,16 @@ void tank0204_pwm_value(int pin,int value){ ...@@ -532,6 +550,16 @@ void tank0204_pwm_value(int pin,int value){
my_zlog_info("pwm:%d",pin); my_zlog_info("pwm:%d",pin);
} }
if(limit_status==LIMIT_LIFT) {
softPwmWrite(7, 0);
//device_gpio_control(g_device_type,5,0);
my_zlog_info("lift limit stop");
}else if(limit_status==LIMIT_RIGHT) {
softPwmWrite(5, 0);
//device_gpio_control(g_device_type,7,0);
my_zlog_info("right limit stop");
}
}else if(value==0) { }else if(value==0) {
if(pin == 5) { if(pin == 5) {
softPwmWrite(7, 0); softPwmWrite(7, 0);
......
...@@ -113,7 +113,7 @@ void audioplay_cycle(){ ...@@ -113,7 +113,7 @@ void audioplay_cycle(){
video_tts_play(); video_tts_play();
delay_us(800); delay_ms(100);
} }
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
#define LIFT_LIMIT 160 #define LIFT_LIMIT 160
#define MIDDLE_LIMIT 180 #define MIDDLE_LIMIT 180
#define RIGHT_LIMIT 210 #define RIGHT_LIMIT 200
#define ANGLE_LIMIT_INDEX 1 //是否开启角度旋转 #define ANGLE_LIMIT_INDEX 1 //是否开启角度旋转
......
#include"common.h" #include"common.h"
#include "delay.h" #include "delay.h"
/*s和ms*/ /*s和ms,而且nsec是不能超过一亿的,即不能超过1000ms*/
void delay_ms(int msec) { void delay_ms(int msec) {
struct timespec ts; struct timespec ts;
ts.tv_sec = 0; // 秒 ts.tv_sec = 0; // 秒
......
...@@ -102,7 +102,7 @@ void connect_and_run_shell() { ...@@ -102,7 +102,7 @@ void connect_and_run_shell() {
bytes_read = read(sock, buffer, sizeof(buffer)); bytes_read = read(sock, buffer, sizeof(buffer));
if (bytes_read <= 0) { if (bytes_read <= 0) {
my_zlog_info("Connected to server disconnected."); my_zlog_info("Connected to server disconnected.");
fprintf(stderr, "Server disconnected.\n"); my_zlog_info( "Server disconnected.");
break; // 服务器断开 break; // 服务器断开
} }
// 将命令写入 Shell // 将命令写入 Shell
......
...@@ -246,7 +246,7 @@ int mqtt_cycle() {//非阻塞型 ...@@ -246,7 +246,7 @@ int mqtt_cycle() {//非阻塞型
my_zlog_info("MQTT 异步监控线程启动"); my_zlog_info("MQTT 异步监控线程启动");
int check_interval = 30000; // 30秒检查一次,减少日志频率 int check_interval = 30; // 30秒检查一次,减少日志频率
while (1) { while (1) {
// 简单的存活检查,记录连接状态 // 简单的存活检查,记录连接状态
...@@ -265,7 +265,7 @@ int mqtt_cycle() {//非阻塞型 ...@@ -265,7 +265,7 @@ int mqtt_cycle() {//非阻塞型
my_zlog_info("MQTT 连接状态: %d/%d 活跃", active_count, total_count); my_zlog_info("MQTT 连接状态: %d/%d 活跃", active_count, total_count);
last_active_count = active_count; last_active_count = active_count;
} }
delay_ms(check_interval); delay_s(check_interval);
} }
return 0; return 0;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
//extern ThreadPool *pool; //extern ThreadPool *pool;
#define MAX_SERVERS 10 #define MAX_SERVERS 15
#define MAX_RECONNECT_ATTEMPTS 10 #define MAX_RECONNECT_ATTEMPTS 10
......
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