Commit ee329e98 authored by 957dd's avatar 957dd

feat:加入了发炮后坐力

parent 2842a9b4
...@@ -2,5 +2,5 @@ ...@@ -2,5 +2,5 @@
#define PROJECT_VERSION_MINOR 1 #define PROJECT_VERSION_MINOR 1
#define PROJECT_VERSION_PATCH 2 #define PROJECT_VERSION_PATCH 2
#define GIT_HASH "" #define GIT_HASH ""
#define BUILD_TIMESTAMP "2025-05-19T12:32:09" #define BUILD_TIMESTAMP "2025-05-20T12:37:15"
#define BUILD_USER "orangepi" #define BUILD_USER "orangepi"
No preview for this file type
...@@ -79,11 +79,9 @@ void mqtt_wirte(){//心跳格式,每5s一次心跳 ...@@ -79,11 +79,9 @@ void mqtt_wirte(){//心跳格式,每5s一次心跳
sprintf(voltage_str, "%.2f", voltage); sprintf(voltage_str, "%.2f", voltage);
char current_str[20]; // 足够存储转换后的字符串的缓冲区 char current_str[20]; // 足够存储转换后的字符串的缓冲区
sprintf(current_str, "%.2f", current); sprintf(current_str, "%.2f", current);
if(AppExit_pin_pwm != 102 || AppExit_pin_pwm != 202 || AppExit_pin_pwm != 301 ||AppExit_pin_pwm != 401) { if(gPwmCount >= 5) alarm_control(voltage);//判断电压警报
alarm_control(voltage);//判断电压警报
}
/*读取程序版本号*/ /*读取程序版本号*/
char *version_num = program_version(); char *version_num = program_version();
...@@ -298,7 +296,7 @@ void on_message(struct mosquitto *mosq, void *obj, const struct mosquitto_messag ...@@ -298,7 +296,7 @@ void on_message(struct mosquitto *mosq, void *obj, const struct mosquitto_messag
device_mqttchange_name(device_id); device_mqttchange_name(device_id);
my_zlog_debug("接收到设备号更改"); my_zlog_debug("接收到设备号更改");
} else {// 提取 head 对象 } else {// 提取 head 对象
if(download_message(json) != 1) my_zlog_debug("接收到dowwnload下载"); if(download_message(json) == 0) my_zlog_debug("接收到dowwnload下载");
if(device_message(json) != 0) my_zlog_debug("没有接收到控制信息,代码编号:%d",device_message(json)); if(device_message(json) != 0) my_zlog_debug("没有接收到控制信息,代码编号:%d",device_message(json));
} }
// 释放 payload 字符串 // 释放 payload 字符串
......
...@@ -95,9 +95,9 @@ void *Mqtt_onnect(void *arg) {//mqtt异常处理,断开自动重连,简单 ...@@ -95,9 +95,9 @@ void *Mqtt_onnect(void *arg) {//mqtt异常处理,断开自动重连,简单
void *delay_count(void *arg) {//专门用于计时的线程 void *delay_count(void *arg) {//专门用于计时的线程
while (1) { while (1) {
Delay_Ms(0,1); Delay_Ms(0,5);
device_delay_count++; device_delay_count++;
if(device_delay_count >= 10000) device_delay_count = 10000; if(device_delay_count >= 5000) device_delay_count = 5000;
} }
} }
......
...@@ -44,6 +44,7 @@ void init_gpioPwm(int *values_pwm) { ...@@ -44,6 +44,7 @@ void init_gpioPwm(int *values_pwm) {
void pin_all_default() {//全部至低电平,车和坦克共用 void pin_all_default() {//全部至低电平,车和坦克共用
for (int i=0;i<gpioCount;i++) { for (int i=0;i<gpioCount;i++) {
if(gpioWPi[i]==16 || gpioWPi[i]==20 || gpioWPi[i]==22) continue;
digitalWrite(gpioWPi[i], LOW); digitalWrite(gpioWPi[i], LOW);
} }
} }
......
/*
此文件为通用文件,一般用于50hz的驱动等和引脚高低,适合车和船使用,
如果有其他需求,此文件就不需要使用
*/
#ifndef GPIO_COMMON_H__ #ifndef GPIO_COMMON_H__
#define GPIO_COMMON_H__ #define GPIO_COMMON_H__
extern int device_delay_count;//延时计算函数,使用前必须置0
// 定义 PWM 引脚的 WiringPi 编号 // 定义 PWM 引脚的 WiringPi 编号
#define PWM_PIN_SPEED 21 #define PWM_PIN_SPEED 21
#define PWM_PIN_CHANGE 2 #define PWM_PIN_CHANGE 2
extern int device_delay_count;//延时计算函数,使用前必须置0
void Device_exit_end();//main最后结束需要调用的函数 void Device_exit_end();//main最后结束需要调用的函数
...@@ -22,7 +28,3 @@ void pwm_init_speed(); ...@@ -22,7 +28,3 @@ void pwm_init_speed();
void pwm_value(int pin,int value); //软件陪我们控制调速 void pwm_value(int pin,int value); //软件陪我们控制调速
#endif #endif
/*
此文件为通用文件,一般用于50hz的驱动等和引脚高低,适合车和船使用,
如果有其他需求,此文件就不需要使用
*/
\ No newline at end of file
...@@ -10,9 +10,6 @@ int tank0202_middle() { ...@@ -10,9 +10,6 @@ int tank0202_middle() {
return 0; return 0;
} }
long long shot_device_time_start ;
long long shot_device_time_end = 0;
void mode_lift_flont(unsigned char gval) { void mode_lift_flont(unsigned char gval) {
if (gval < 50) { if (gval < 50) {
pwmWrite(PWM_PIN_SPEED, 75); pwmWrite(PWM_PIN_SPEED, 75);
...@@ -199,6 +196,9 @@ int tank0202_change(unsigned char *buf) { ...@@ -199,6 +196,9 @@ int tank0202_change(unsigned char *buf) {
} }
long long shot_device_time_start =0 ;
long long shot_device_time_end = 0;
// 函数功能:获取当前精确到毫秒的时间戳 // 函数功能:获取当前精确到毫秒的时间戳
// 返回值:当前时间的毫秒数 // 返回值:当前时间的毫秒数
long long get_current_time_millis() { long long get_current_time_millis() {
...@@ -213,12 +213,17 @@ long long get_current_time_millis() { ...@@ -213,12 +213,17 @@ long long get_current_time_millis() {
} }
void tank_shot_back_stop_task_function(void *arg) { void tank_shot_back_stop_task_function(void *arg) {
if(device_delay_count>=20&&device_delay_count<=40) { while(1){
mode_right_back(80); long long interval=shot_device_time_start-shot_device_time_end;
} if(device_delay_count>10&&device_delay_count<=25) mode_right_back(0);
if(device_delay_count>40) { if(interval>100){
mode_right_back(0); if(device_delay_count <= 10) {
mode_right_back(80);
my_zlog_debug("操作耗时: %lld 毫秒", interval);
}
} }
}
} }
ThreadPool *pool_tank; ThreadPool *pool_tank;
...@@ -228,15 +233,15 @@ void tank_shot_back_stop_task_end(){ ...@@ -228,15 +233,15 @@ void tank_shot_back_stop_task_end(){
int tank_shot_back_stop(int pin,int val){ int tank_shot_back_stop(int pin,int val){
static int shot_count=0; static int shot_count=0;
shot_device_time_start=get_current_time_millis(); shot_device_time_start=get_current_time_millis();
if(pin !=27){ if(pin !=27){
my_zlog_debug("非27引脚\n"); my_zlog_debug("非27引脚");
return 1; return 1;
} }
if(val == 0) { if(val == 0) {
mode_right_back(0); mode_right_back(0);
shot_count=1; shot_count=2;
//thread_pool_destroy(pool); //thread_pool_destroy(pool);
} }
if(val != 0) { if(val != 0) {
...@@ -244,10 +249,14 @@ int tank_shot_back_stop(int pin,int val){ ...@@ -244,10 +249,14 @@ int tank_shot_back_stop(int pin,int val){
int arg =1; int arg =1;
pool_tank=thread_pool_init(1,1); pool_tank=thread_pool_init(1,1);
thread_pool_add_task(pool_tank, tank_shot_back_stop_task_function, &arg); thread_pool_add_task(pool_tank, tank_shot_back_stop_task_function, &arg);
my_zlog_debug("线程池打开");
shot_count=1; shot_count=1;
}if(shot_count == 1){ }
shot_count=1;
if(shot_count == 1){
device_delay_count=0; device_delay_count=0;
} }
} }
shot_device_time_end=get_current_time_millis(); shot_device_time_end=get_current_time_millis();
} }
\ No newline at end of file
...@@ -68,7 +68,9 @@ int main(int argc, char *argv[]) { ...@@ -68,7 +68,9 @@ int main(int argc, char *argv[]) {
thread_end(); //关闭线程 thread_end(); //关闭线程
my_zlog_info("程序关闭成功"); my_zlog_info("程序关闭成功");
my_log_close();//关闭日志 my_log_close();//关闭日志
Device_exit_end();//结束相应的设备的程序执行
//printf("程序关闭成功\n"); //printf("程序关闭成功\n");
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }
\ No newline at end of file
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