Commit 193b8804 authored by 957dd's avatar 957dd

加入了限位何处理了一些bug

parent 04916f7c
No preview for this file type
......@@ -9,82 +9,31 @@ void car0104_stop() {
}
void car0104_back(unsigned char gval) {
int b=0;
if (gval < 50) {
pwmWrite(PWM_PIN_SPEED, 75);
} else if (gval <= 55) {
pwmWrite(PWM_PIN_SPEED, 78);
} else if (gval <= 60) {
}
else if (gval <= 60) {
pwmWrite(PWM_PIN_SPEED, 79);
} else if (gval <= 65) {
}else if (gval <= 70) {
pwmWrite(PWM_PIN_SPEED, 80);
} else if (gval <= 70) {
pwmWrite(PWM_PIN_SPEED, 81);
} else if (gval <= 75) {
pwmWrite(PWM_PIN_SPEED, 82);
} else if (gval <= 90) {
pwmWrite(PWM_PIN_SPEED, 83);
} else if (gval <= 100) {
pwmWrite(PWM_PIN_SPEED, 84);
} else if (gval <= 110) {
pwmWrite(PWM_PIN_SPEED, 85);
} else if (gval <= 120) {
pwmWrite(PWM_PIN_SPEED, 86);
} else if (gval <= 130) {
pwmWrite(PWM_PIN_SPEED, 87);
} else if (gval <= 140) {
pwmWrite(PWM_PIN_SPEED, 88);
} else if (gval <= 150) {
pwmWrite(PWM_PIN_SPEED, 89);
} else if (gval <= 160) {
pwmWrite(PWM_PIN_SPEED, 90);
} else if (gval <= 170) {
pwmWrite(PWM_PIN_SPEED, 91);
} else if (gval <= 180) {
pwmWrite(PWM_PIN_SPEED, 92);
} else if (gval <= 190) {
pwmWrite(PWM_PIN_SPEED, 93);
} else if (gval <= 200) {
pwmWrite(PWM_PIN_SPEED, 94);
}else if(gval >70){
int flont_speed = 80+(gval-70)/10+b;
pwmWrite(PWM_PIN_SPEED, flont_speed);
}
}
void car0104_flont(unsigned char gval) {
int b=0;
if (gval < 50) {
pwmWrite(PWM_PIN_SPEED, 75);
} else if (gval <= 55) {
pwmWrite(PWM_PIN_SPEED, 72);
} else if (gval <= 60) {
pwmWrite(PWM_PIN_SPEED, 71);
} else if (gval <= 65) {
}else if (gval <= 70) {
pwmWrite(PWM_PIN_SPEED, 70);
} else if (gval <= 70) {
pwmWrite(PWM_PIN_SPEED, 69);
} else if (gval <= 75) {
pwmWrite(PWM_PIN_SPEED, 68);
} else if (gval <= 90) {
pwmWrite(PWM_PIN_SPEED, 67);
} else if (gval <= 100) {
pwmWrite(PWM_PIN_SPEED, 66);
} else if (gval <= 110) {
pwmWrite(PWM_PIN_SPEED, 65);
} else if (gval <= 120) {
pwmWrite(PWM_PIN_SPEED, 64);
} else if (gval <= 130) {
pwmWrite(PWM_PIN_SPEED, 63);
} else if (gval <= 140) {
pwmWrite(PWM_PIN_SPEED, 62);
} else if (gval <= 150) {
pwmWrite(PWM_PIN_SPEED, 61);
} else if (gval <= 160) {
pwmWrite(PWM_PIN_SPEED, 60);
} else if (gval <= 170) {
pwmWrite(PWM_PIN_SPEED, 59);
} else if (gval <= 180) {
pwmWrite(PWM_PIN_SPEED, 58);
} else if (gval <= 190) {
pwmWrite(PWM_PIN_SPEED, 57);
} else if (gval <= 200) {
pwmWrite(PWM_PIN_SPEED, 56);
} else if(gval >70){
int back_speed = 70 - (gval-70)/10-b;
pwmWrite(PWM_PIN_SPEED, back_speed);
}
}
......@@ -173,13 +122,15 @@ void car0104_change(unsigned char *buf) {
unsigned char val = buf[2];
if(mode == 1 ) {
car0104_flont(val+25);
car0104_flont(val+20);
}else if(mode == 2 ) {
car0104_back(val+25);
car0104_back(val+20);
}else if(mode == 3) {
car0104_lift(90);
if(val !=0)car0104_lift(90);
else car0104_lift(0);
}else if(mode == 4) {
car0104_right(90);
if(val !=0) car0104_right(90);
else car0104_lift(0);
}
}
......@@ -3,7 +3,9 @@
#include "pthrpoll.h"
#include "tank0203_control.h"
int g_modecount_tank0203=0;
#define PWM_MIN 55 // 最小PWM值
#define PWM_MAX 95 // 最大PWM值
#define PWM_NEUTRAL 75 // 中立位置
void tank0203_middle() {
pwmWrite(PWM_PIN_SPEED,75);
......@@ -11,207 +13,132 @@ void tank0203_middle() {
}
void tank0203_mode_lift_flont(unsigned char gval) {
int b=0;
if (gval < 50) {
pwmWrite(PWM_PIN_SPEED, 75);
} else if (gval <= 55) {
pwmWrite(PWM_PIN_SPEED, 78);
} else if (gval <= 60) {
}
else if (gval <= 60) {
pwmWrite(PWM_PIN_SPEED, 79);
} else if (gval <= 65) {
}else if (gval <= 70) {
pwmWrite(PWM_PIN_SPEED, 80);
} else if (gval <= 70) {
pwmWrite(PWM_PIN_SPEED, 81);
} else if (gval <= 75) {
pwmWrite(PWM_PIN_SPEED, 82);
} else if (gval <= 90) {
pwmWrite(PWM_PIN_SPEED, 83);
} else if (gval <= 100) {
pwmWrite(PWM_PIN_SPEED, 84);
} else if (gval <= 110) {
pwmWrite(PWM_PIN_SPEED, 85);
} else if (gval <= 120) {
pwmWrite(PWM_PIN_SPEED, 86);
} else if (gval <= 130) {
pwmWrite(PWM_PIN_SPEED, 87);
} else if (gval <= 140) {
pwmWrite(PWM_PIN_SPEED, 88);
} else if (gval <= 150) {
pwmWrite(PWM_PIN_SPEED, 89);
} else if (gval <= 160) {
pwmWrite(PWM_PIN_SPEED, 90);
} else if (gval <= 170) {
pwmWrite(PWM_PIN_SPEED, 91);
} else if (gval <= 180) {
pwmWrite(PWM_PIN_SPEED, 92);
} else if (gval <= 190) {
pwmWrite(PWM_PIN_SPEED, 93);
} else if (gval <= 200) {
pwmWrite(PWM_PIN_SPEED, 94);
}else if(gval >70){
int flont_speed = 80+(gval-70)/10+b;
pwmWrite(PWM_PIN_SPEED, flont_speed);
}
}
void tank0203_mode_lift_back(unsigned char gval) {
int b=0;
if (gval < 50) {
pwmWrite(PWM_PIN_SPEED, 75);
} else if (gval <= 55) {
pwmWrite(PWM_PIN_SPEED, 72);
} else if (gval <= 60) {
pwmWrite(PWM_PIN_SPEED, 71);
} else if (gval <= 65) {
}else if (gval <= 70) {
pwmWrite(PWM_PIN_SPEED, 70);
} else if (gval <= 70) {
pwmWrite(PWM_PIN_SPEED, 69);
} else if (gval <= 75) {
pwmWrite(PWM_PIN_SPEED, 68);
} else if (gval <= 90) {
pwmWrite(PWM_PIN_SPEED, 67);
} else if (gval <= 100) {
pwmWrite(PWM_PIN_SPEED, 66);
} else if (gval <= 110) {
pwmWrite(PWM_PIN_SPEED, 65);
} else if (gval <= 120) {
pwmWrite(PWM_PIN_SPEED, 64);
} else if (gval <= 130) {
pwmWrite(PWM_PIN_SPEED, 63);
} else if (gval <= 140) {
pwmWrite(PWM_PIN_SPEED, 62);
} else if (gval <= 150) {
pwmWrite(PWM_PIN_SPEED, 61);
} else if (gval <= 160) {
pwmWrite(PWM_PIN_SPEED, 60);
} else if (gval <= 170) {
pwmWrite(PWM_PIN_SPEED, 59);
} else if (gval <= 180) {
pwmWrite(PWM_PIN_SPEED, 58);
} else if (gval <= 190) {
pwmWrite(PWM_PIN_SPEED, 57);
} else if (gval <= 200) {
pwmWrite(PWM_PIN_SPEED, 56);
} else if(gval >70){
int back_speed = 70 - (gval-70)/10-b;
pwmWrite(PWM_PIN_SPEED, back_speed);
}
}
void tank0203_mode_right_flont(unsigned char gval) {
void tank0203_mode_right_back(unsigned char gval) {
int b=0;
if (gval < 50) {
pwmWrite(PWM_PIN_CHANGE, 75);
} else if (gval <= 55) {
pwmWrite(PWM_PIN_CHANGE, 78);
} else if (gval <= 60) {
}else if (gval <= 60) {
pwmWrite(PWM_PIN_CHANGE, 79);
} else if (gval <= 65) {
}else if (gval <= 70) {
pwmWrite(PWM_PIN_CHANGE, 80);
} else if (gval <= 70) {
pwmWrite(PWM_PIN_CHANGE, 81);
} else if (gval <= 75) {
pwmWrite(PWM_PIN_CHANGE, 82);
} else if (gval <= 90) {
pwmWrite(PWM_PIN_CHANGE, 83);
} else if (gval <= 100) {
pwmWrite(PWM_PIN_CHANGE, 84);
} else if (gval <= 110) {
pwmWrite(PWM_PIN_CHANGE, 85);
} else if (gval <= 120) {
pwmWrite(PWM_PIN_CHANGE, 86);
} else if (gval <= 130) {
pwmWrite(PWM_PIN_CHANGE, 87);
} else if (gval <= 140) {
pwmWrite(PWM_PIN_CHANGE, 88);
} else if (gval <= 150) {
pwmWrite(PWM_PIN_CHANGE, 89);
} else if (gval <= 160) {
pwmWrite(PWM_PIN_CHANGE, 90);
} else if (gval <= 170) {
pwmWrite(PWM_PIN_CHANGE, 91);
} else if (gval <= 180) {
pwmWrite(PWM_PIN_CHANGE, 92);
} else if (gval <= 190) {
pwmWrite(PWM_PIN_CHANGE, 93);
} else if (gval <= 200) {
pwmWrite(PWM_PIN_CHANGE, 94);
}else if(gval >70){
int flont_speed = 80+(gval-70)/10+b;
pwmWrite(PWM_PIN_CHANGE, flont_speed);
}
}
void tank0203_mode_right_back(unsigned char gval) {
void tank0203_mode_right_flont(unsigned char gval) {
int b=0;
if (gval < 50) {
pwmWrite(PWM_PIN_CHANGE, 75);
} else if (gval <= 55) {
}else if (gval <= 60) {
pwmWrite(PWM_PIN_CHANGE, 71);
} else if (gval <= 60) {
pwmWrite(PWM_PIN_CHANGE, 70);
} else if (gval <= 65) {
pwmWrite(PWM_PIN_CHANGE, 70);
} else if (gval <= 70) {
pwmWrite(PWM_PIN_CHANGE, 70);
} else if (gval <= 75) {
pwmWrite(PWM_PIN_CHANGE, 69);
} else if (gval <= 90) {
pwmWrite(PWM_PIN_CHANGE, 68);
} else if (gval <= 100) {
pwmWrite(PWM_PIN_CHANGE, 68);
} else if (gval <= 110) {
pwmWrite(PWM_PIN_CHANGE, 66);
} else if (gval <= 120) {
pwmWrite(PWM_PIN_CHANGE, 65);
} else if (gval <= 130) {
pwmWrite(PWM_PIN_CHANGE, 64);
} else if (gval <= 140) {
pwmWrite(PWM_PIN_CHANGE, 62);
} else if (gval <= 150) {
pwmWrite(PWM_PIN_CHANGE, 60);
} else if (gval <= 160) {
pwmWrite(PWM_PIN_CHANGE, 59);
} else if (gval <= 170) {
pwmWrite(PWM_PIN_CHANGE, 58);
} else if (gval <= 180) {
pwmWrite(PWM_PIN_CHANGE, 57);
} else if (gval <= 190) {
pwmWrite(PWM_PIN_CHANGE, 56);
} else if (gval <= 200) {
pwmWrite(PWM_PIN_CHANGE, 55);
} else if(gval >70){
int back_speed = 70 - (gval-70)/10-b;
pwmWrite(PWM_PIN_CHANGE, back_speed);
}
}
void tank0203_change(unsigned char *buf) {
unsigned char mode = buf[1];
unsigned char val = buf[2];
static bool tank0203_judg = 0;
static int tank0203_val_1=0;
static int tank0203_val_2=0;
static int modecount_tank0203=0;
static int tank0203_index =0;
// static int s_val_1=0;
// static int s_val_2=0;
if(mode == 1 ) {
//tank0203_mode_lift_flont(val);
tank0203_mode_lift_flont(val);
tank0203_mode_right_flont(val);
g_modecount_tank0203=0;
tank0203_val_1 = val;
modecount_tank0203=0;
//s_val_1 = val;
}else if(mode == 2 ) {
//tank0203_mode_lift_back(val);
tank0203_mode_lift_back(val);
tank0203_mode_right_back(val);
g_modecount_tank0203=1;
tank0203_val_2 = val;
modecount_tank0203=1;
//s_val_2 = val;
}
if((mode == 1||mode ==2)&&val == 0) {
g_modecount_tank0203=0;
tank0203_judg = 0;
}else tank0203_judg = 1;
if((mode == 1||mode == 2)&&val == 0) {
modecount_tank0203 = 0;
tank0203_index = 0;
}
if((mode == 1||mode == 2)&&val != 0) tank0203_index = 1;
if(mode == 3) {
if(g_modecount_tank0203 == 0) {
if(tank0203_judg == 0) tank0203_mode_lift_back(tank0203_val_1-15);
else tank0203_mode_lift_back(val+11);
if(modecount_tank0203 == 0){
if(tank0203_index == 1) {
tank0203_mode_lift_flont(0);
//tank0203_mode_right_flont(s_val_1-20);
}
else {
tank0203_mode_lift_back(val+30);
tank0203_mode_right_flont(val+30);
}
}
if(g_modecount_tank0203 == 1) {
if(tank0203_judg == 0) tank0203_mode_lift_flont(tank0203_val_2-15);
else tank0203_mode_lift_flont(val+11);
if(modecount_tank0203 == 1) {
if(tank0203_index == 1) {
tank0203_mode_lift_back(0);
//tank0203_mode_lift_back(s_val_2-20);
}else {
tank0203_mode_lift_back(val+20);
tank0203_mode_right_flont(val+20);
}
}
}else if(mode == 4) {
if(g_modecount_tank0203 == 0) {
if(tank0203_judg == 0) tank0203_mode_lift_flont(tank0203_val_2-15);
else tank0203_mode_lift_flont(val+11);
if(modecount_tank0203 == 1){
if(tank0203_index == 1) {
//tank0203_mode_right_back(s_val_1);
tank0203_mode_right_back(0);
}
if(g_modecount_tank0203 == 1) {
if(tank0203_judg == 0) tank0203_mode_lift_back(tank0203_val_1-15);
else tank0203_mode_lift_back(val+11);
else {
tank0203_mode_lift_flont(val+20);
tank0203_mode_right_back(val+20);
}
}
if(modecount_tank0203 == 0) {
if(tank0203_index == 1) {
//tank0203_mode_lift_flont(s_val_1-20);
tank0203_mode_right_flont(0);
}
else {
tank0203_mode_lift_flont(val+20);
tank0203_mode_right_back(val+20);
}
}
}
}
......
......@@ -2,6 +2,7 @@
#include "devcontrol_common.h"
#include "gpio_init.h"
#include "pthrpoll.h"
#include "tank_angle.h"
int tank_shot_back_stop(unsigned char pin,unsigned char val);
......@@ -11,43 +12,61 @@ long long shot_device_time_start =0 ;
long long shot_device_time_end = 0;
void tank_shot_back(unsigned char gval) {
int b=0;
if (gval < 50) {
pwmWrite(PWM_PIN_CHANGE, 75);
} else if (gval <= 55) {
pwmWrite(PWM_PIN_CHANGE, 71);
} else if (gval <= 60) {
pwmWrite(PWM_PIN_CHANGE, 70);
} else if (gval <= 65) {
pwmWrite(PWM_PIN_CHANGE, 70);
} else if (gval <= 70) {
pwmWrite(PWM_PIN_CHANGE, 70);
} else if (gval <= 75) {
pwmWrite(PWM_PIN_CHANGE, 69);
} else if (gval <= 90) {
pwmWrite(PWM_PIN_CHANGE, 68);
} else if (gval <= 100) {
pwmWrite(PWM_PIN_CHANGE, 68);
} else if (gval <= 110) {
pwmWrite(PWM_PIN_CHANGE, 66);
} else if (gval <= 120) {
pwmWrite(PWM_PIN_CHANGE, 65);
} else if (gval <= 130) {
pwmWrite(PWM_PIN_CHANGE, 64);
} else if (gval <= 140) {
pwmWrite(PWM_PIN_CHANGE, 62);
} else if (gval <= 150) {
pwmWrite(PWM_PIN_CHANGE, 60);
} else if (gval <= 160) {
pwmWrite(PWM_PIN_CHANGE, 59);
} else if (gval <= 170) {
pwmWrite(PWM_PIN_CHANGE, 58);
} else if (gval <= 180) {
pwmWrite(PWM_PIN_CHANGE, 57);
} else if (gval <= 190) {
pwmWrite(PWM_PIN_CHANGE, 56);
} else if (gval <= 200) {
pwmWrite(PWM_PIN_CHANGE, 55);
if(g_tank_common_config_t->device_id ==DEVICE_TANK0203) pwmWrite(PWM_PIN_SPEED, 75);
}else if (gval <= 60) {
pwmWrite(PWM_PIN_CHANGE, 79);
if(g_tank_common_config_t->device_id ==DEVICE_TANK0203) pwmWrite(PWM_PIN_SPEED, 71);
}else if (gval <= 70) {
pwmWrite(PWM_PIN_CHANGE, 80);
if(g_tank_common_config_t->device_id ==DEVICE_TANK0203) pwmWrite(PWM_PIN_SPEED, 70);
}else if(gval >70){
int change_1 = 80+(gval-70)/10+b;
int speed_2= 70 - (gval-70)/10-b;
if(g_tank_common_config_t->device_id ==DEVICE_TANK0203) pwmWrite(PWM_PIN_SPEED, speed_2);
pwmWrite(PWM_PIN_CHANGE, change_1);
}
// if (gval < 50) {
// pwmWrite(PWM_PIN_CHANGE, 75);
// } else if (gval <= 55) {
// pwmWrite(PWM_PIN_CHANGE, 71);
// } else if (gval <= 60) {
// pwmWrite(PWM_PIN_CHANGE, 70);
// } else if (gval <= 65) {
// pwmWrite(PWM_PIN_CHANGE, 70);
// } else if (gval <= 70) {
// pwmWrite(PWM_PIN_CHANGE, 70);
// } else if (gval <= 75) {
// pwmWrite(PWM_PIN_CHANGE, 69);
// } else if (gval <= 90) {
// pwmWrite(PWM_PIN_CHANGE, 68);
// } else if (gval <= 100) {
// pwmWrite(PWM_PIN_CHANGE, 68);
// } else if (gval <= 110) {
// pwmWrite(PWM_PIN_CHANGE, 66);
// } else if (gval <= 120) {
// pwmWrite(PWM_PIN_CHANGE, 65);
// } else if (gval <= 130) {
// pwmWrite(PWM_PIN_CHANGE, 64);
// } else if (gval <= 140) {
// pwmWrite(PWM_PIN_CHANGE, 62);
// } else if (gval <= 150) {
// pwmWrite(PWM_PIN_CHANGE, 60);
// } else if (gval <= 160) {
// pwmWrite(PWM_PIN_CHANGE, 59);
// } else if (gval <= 170) {
// pwmWrite(PWM_PIN_CHANGE, 58);
// } else if (gval <= 180) {
// pwmWrite(PWM_PIN_CHANGE, 57);
// } else if (gval <= 190) {
// pwmWrite(PWM_PIN_CHANGE, 56);
// } else if (gval <= 200) {
// pwmWrite(PWM_PIN_CHANGE, 55);
// }
}
const tank_common_back tank_common_config_t[]={
......@@ -148,3 +167,4 @@ void tank_shot_stop_control(int device_id,unsigned char pin,unsigned char val) {
g_tank_common_config_t->shot_back(pin,val);
}
......@@ -15,4 +15,6 @@ void tank_shot_stop_control(int device_id,unsigned char pin,unsigned char val);
void tank_thread_close();
int angele_limit();
#endif
\ No newline at end of file
......@@ -62,7 +62,7 @@ const deviceconfig_t device_configs[] = {
.device_id = DEVICE_TANK0203,
.device_name = "tank0203",
.gpio_pins = {6, 16, 20, 22, 23,-1},/* 补充GPIO引脚 */
.gpio_pwms = {5 , 7 ,24,26, 27,-1},
.gpio_pwms = {5 , 7 ,24, 26, 27,-1},
.device_pwm_init = physics_pwm_init,
.device_control_stop = tank0203_middle,/* 补充速度控制函数 */
.emergency_code = 203
......
......@@ -70,21 +70,31 @@ void pwm_value(int pin,int value) { //软件陪我们控制调速
else if(g_device_type == DEVICE_TANK0206) softPwmWrite(pin, 45);
else {
softPwmWrite(pin, shot_speed);
my_zlog_debug("pin:%d,%d",pin,shot_speed);
my_zlog_debug("pwm:%d,%d",pin,shot_speed);
}
} else {
if(g_device_type == DEVICE_TANK0202) softPwmWrite(pin, 35);
if(g_device_type == DEVICE_TANK0203) softPwmWrite(pin, 35);
if(g_device_type == DEVICE_TANK0206) softPwmWrite(pin, 35);
if(g_device_type == DEVICE_TANK0202) {
softPwmWrite(pin, 35);
if(angele_limit() == 1) softPwmWrite(5, 0);
if(angele_limit() == 2) softPwmWrite(7, 0);
}
else if(g_device_type == DEVICE_TANK0203) {
softPwmWrite(pin, 30);
if(angele_limit() == 1) softPwmWrite(5, 0);
if(angele_limit() == 2) softPwmWrite(7, 0);
}
else if(g_device_type == DEVICE_TANK0206) softPwmWrite(pin, 35);
else{
softPwmWrite(pin, shot_speed);
my_zlog_debug("pwm:%d,%d",pin,shot_speed);
}
my_zlog_debug("pwm:%d",pin);
}
}else if(value==0) {
softPwmWrite(pin, 0);
my_zlog_debug("pin:%d,0",pin);
my_zlog_debug("pwm:%d,0",pin);
}
}
......
......@@ -2,6 +2,9 @@
#include "common.h"
#include "ads1115.h"
#define LIFT_LIMIT 165
#define MIDDLE_LIMIT 180
#define RIGHT_LIMIT 195
double tank_angle(){
double angle=0;
......@@ -13,3 +16,12 @@ double tank_angle(){
return angle;
}
int angele_limit(){
int tank_limit_angele = 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;
}
\ No newline at end of file
......@@ -2,4 +2,7 @@
#define TANK_ANGLE_H
double tank_angle();
int angele_limit();
#endif
\ No newline at end of file
......@@ -4,7 +4,7 @@
#include"common.h"// 用于存储HTTP响应数据的结构体
/*2为关闭请求,1为打开*/
#define HTTP_REQUEST_INDEX 1
#define HTTP_REQUEST_INDEX 2
struct MemoryStruct {
char *memory;
......
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