deal,电机
来源:互联网 发布:淘宝发布食品类宝贝 编辑:程序博客网 时间:2024/05/16 19:40
deal.c
#include "deal.h"u8 arduino_speed=0;int arduino_angle=0;u8 arduino_judge=0;/////-+uint8_t arduino_temp[10];int8_t arduino_TEMP[10]={42,44,52,44,43,44,48,44};u8 arduino_counter=0;u8 douhao_pro(u8 *buf,u8 cx){ u8 *p=buf; while(cx) { //if(*buf=='*'||*buf<' ')return 0XFF;//Óöµ½'*'»òÕß·Ç·¨×Ö·û,Ôò²»´æÔÚµÚcx¸ö¶ººÅ if(*buf==',')cx--; buf++; } return buf-p; }void arduino_Analysis(u8 *buf){ u8 posx; u8 i=0; char str[5]={0}; //printf("////123\r\n"); posx=douhao_pro(buf,1); if(posx!=0XFF) { while(*(posx+buf)!=44) { str[i++]=*(posx+buf); posx++; } i=0; arduino_speed=atoi(str); memset(str,0,5); } // //printf("value_1:%d\r\n",value_1);///////////////////////////-+ºÅ posx=douhao_pro(buf,2); if(posx!=0XFF) { while(*(posx+buf)!=',') { str[i++]=*(posx+buf); posx++; } i=0; arduino_judge=atoi(str); memset(str,0,5); } // // printf("value_2:%d\r\n",value_2); posx=douhao_pro(buf,3); if(posx!=0XFF) { while(*(posx+buf)!=',') { str[i++]=*(posx+buf); posx++; } i=0; arduino_angle=atoi(str); memset(str,0,5); } }void USART3_IRQHandler(void) //´®¿Ú2È«¾ÖÖжϷþÎñº¯Êý{ if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) //½ÓÊÕÖжÏÓÐЧ,Èô½ÓÊÕÊý¾Ý¼Ä´æÆ÷Âú { arduino_temp[arduino_counter] = USART_ReceiveData(USART3); //½ÓÊÕÊý¾Ý if(arduino_counter == 0 && arduino_temp[0]!=42) return; //arduino_counter == 0&&temp[0]=42 ÊÇ¶ÔµÄ arduino_counter++; if(arduino_counter==10) //½ÓÊÕµ½n¸öÊý¾Ý { arduino_counter=0; //ÖØи³Öµ£¬×¼±¸ÏÂÒ»Ö¡Êý¾ÝµÄ½ÓÊÕ memcpy(arduino_TEMP,arduino_temp,10); arduino_Analysis(arduino_TEMP);////////////////////////////arduino½âÎö } }}
deal.h
#ifndef __DEAL_H#define __DEAL_H #include "stdlib.h"#include "string.h"#include "stm32f10x.h"u8 douhao_pro(u8 *buf,u8 cx);void arduino_Analysis(u8 *buf);extern u8 arduino_speed;extern int arduino_angle;#endif```main.c
include “stm32f10x.h”
include “delay.h”
include “sys.h”
include “usart.h”
include “time.h”
include “stm32f10x_it.h”
include “adc.h”
include “stdlib.h”
include “iwdg.h”
include “stdio.h”
include “string.h”
//#include “lcd.h”
include “windspeed.h”
include “deal.h”
include “5110.h”
__IO int value_1 = 0;////´¬Ç°ÃæµÄ¶æ Öµ¾ÍÊǽǶÈ-90µ½90¶È
__IO int value_2 = 5;////////5 µµÊÇÍ£
__IO int value_3 = 0; // º½ÏòÇл»
__IO int value_4 = 0; // º½¼£Çл»
///////value_5=1 ´¬ÉÏ¿ØÖÆ value_5 = 0 °¶ÉÏ¿ØÖÆ
__IO int value_5 = 1; //´¬ÉÏÊÖ¶¯Çл» 1 ´¬ÉÏģʽ 0 °¶ÉÏģʽ
int16_t adxc4_zhongzhi=3110; ////////////////Ç° È˹¤²Ù¶æµÄÖÐÖµ
int current=0,former=0,sendvalue=0,orgin=0,DuoJiao=0;
extern unsigned char sign;
char buffer[30]={0x68,0x2c,0};
extern uint8_t TEMP[40];////
int angle;
u16 adcx,adcx4,adcx7;//////
char i=0;
float temperate=0;
float delta=0;///ÐèҪתµÄ½Ç¶ÈÖµ
define dianweiqi_zhongzhi 2500
int jiaozhun_zhongzhi=0;
int adcx1_chazhi=0;//////adc1²îÖµ
int adcx4_chazhi=0;//////adc4²îÖµ
u8 jiaozhun_dian_flag=1;////////////////////
u8 time_adc_flag=0;
int err=0;
int err1=0;////У׼Îó²î
int err_duo=0;///Ç° ¶æµÄÎó²î
int err_qianhou_duo=0;////
u8 ad_time_flag=0;
u8 c=0;
extern uint8_t arduino_TEMP[10];
u8 douhao(u8 *buf,u8 cx);
void str_Analysis(u8 *buf);
void judge(int16_t temp);
float WS_speed;
u16 WD_direction;
//int sss=-5;
int main(void)
{
u8 i;
u8 lcd_buff[10]={0};////////lcd5110´òÓ¡¸¨Öúº¯Êý
delay_init();
NVIC_Configuration();
USART1_Config();
USART2_Config();
LED_Init();
USART3_Config();
UART4_Config();
UART5_Config();
IWDG_Init(6,625); // 3s¿´ÃŹ·Ê±¼ä
Adc_Init();///
TIM1_PWM_Init();////
TIM_SetCompare4(TIM1,49);
///////////¶æ»ú³õʼ»¯
Motor_Init(10, 10, 2);////
TIM2_TIM3_PWM(1000,2); /////
TIM4_Init(999,7199);//////¶¨Ê±0.1s ·çËÙÒÇ
//TIM4_Init(999,719);/////////////¶¨Ê±²É¼¯adÖµ100*720/72000000
//LCD_Init();
//mini_display();
LCD5110_Init_IO();
LCD_init();////5110
LCD_clear();//5110ÇåÆÁ
while(1)
{
if(jiaozhun_dian_flag==0)/////////////µ¥Æ¬»úµôµçºó´ÓÐÂУ׼
{
TIM_SetCompare4(TIM1,49); adcx=Get_Adc_Average1(ADC_Channel_1,50); sprintf(lcd_buff,"%d",dianweiqi_zhongzhi); LCD_write_english_string(0,0,"zz_adcx1:"); LCD_write_english_string(54,0,lcd_buff); sprintf(lcd_buff,"%d",adcx); LCD_write_english_string(0,1,"adcx1:"); LCD_write_english_string(36,1,lcd_buff); // printf("adcx=%d\r\n",adcx); //jiaozhun_zhongzhi=dianweiqi_zhongzhi; // printf("jiaozhun_zhongzhi=%d\r\n",jiaozhun_zhongzhi); err1=adcx-dianweiqi_zhongzhi; // printf("err1=%d\r\n",err1); if(err1<-5)//////5 ¶æÏòÓÒת { GPIO_SetBits(GPIOA,GPIO_Pin_5); TIM2_TIM3_PWM(500,50);/////2000¸öÂö³å 500ÊÇ0.5ms } else if(err1>5)////-5 { GPIO_ResetBits(GPIOA,GPIO_Pin_5);////////¶æÏò×óת TIM2_TIM3_PWM(500,50); } else { jiaozhun_dian_flag=1; } } else { ////////lcd5110 //dianweiqi_zhongzhi sprintf(lcd_buff,"%d",dianweiqi_zhongzhi); LCD_write_english_string(0,0,"zz_adcx1:"); LCD_write_english_string(54,0,lcd_buff); /////////////////////////////////////////////////// sprintf(lcd_buff,"%d",adcx); LCD_write_english_string(0,1,"adcx1:"); LCD_write_english_string(36,1,lcd_buff); //LCD_write_number(54,0,dianweiqi_zhongzhi%10); //LCD_write_number(48,0,(dianweiqi_zhongzhi/10)%10); //LCD_write_number(42,0,(dianweiqi_zhongzhi/100)%10); // LCD_write_number(36,0,(dianweiqi_zhongzhi/1000)%10); // for(i=0;i<10;i++) // printf("aaa=%d\r\n",arduino_TEMP[i]); WS_speed=windspeed_Analysis();//////////////·çËÙ //WS_speed=112.1; //printf("WS_speed=%.1fm/s\r\n",WS_speed); sprintf(lcd_buff,"%.1f",WS_speed); LCD_write_english_string(0,2,"fengsu:"); LCD_write_english_string(42,2,lcd_buff); WD_direction=winddirection_Analysis();///////·çÏò sprintf(lcd_buff,"%d",WD_direction); LCD_write_english_string(0,3,"fengxg:"); LCD_write_english_string(42,3,lcd_buff); // printf("WD_direction=%d\r\n",WD_direction); str_Analysis(TEMP); ////////////////////////////////////////×Ö·ûÊý×é½âÎö if(value_3==1||value_4==2) { value_1=(int16_t)delta; //º½Ïò,º½¼£Ä£Ê½¶æ»ú¿ØÖÆ //printf("value_1=%d\r\n",value_1); } // printf("value_3=%d\r\n",value_3); // printf("value_4=%d\r\n",value_4); ////////////////////////////////////// if(value_5==1) //´¬ÉÏÊÖ¶¯¿ØÖÆ̨¿ØÖÆ { USART_Cmd(USART3, ENABLE); //ʹÄÜ USART3 arduino_Analysis(arduino_TEMP);////////////////////////////arduino½âÎö //printf("arduino_speed=%d\r\n",arduino_speed); // printf("arduino_angle=%d\r\n",arduino_angle); DuoJiao=arduino_angle;/////×ó value_1=DuoJiao; ////////////////////////////////////////////////value_1 if(value_1>=0) { //memset(lcd_buff,0,10); LCD_write_english_string(36,4,"+"); LCD_write_number(48,4,value_1%10); LCD_write_number(42,4,(value_1/10)%10); //sprintf(lcd_buff,"%d",value_1); // LCD_write_english_string(0,4,"fengxg:"); // LCD_write_english_string(48,4,lcd_buff); // memset(lcd_buff,0,10); // LCD_ShowNum(240,280,value_1,2,24); } else { LCD_write_english_string(36,4,"-"); LCD_write_number(48,4,abs(value_1)%10); LCD_write_number(42,4,(abs(value_1)/10)%10); //sprintf(lcd_buff,"%d",abs(value_1)); // LCD_write_english_string(0,4,"fengxg:"); // LCD_write_english_string(48,4,lcd_buff); // memset(lcd_buff,0,10); //LCD_ShowString(230,280,200,24,24,"-"); // LCD_ShowNum(240,280,abs(value_1),2,24); } //////¶æ»ú±£»¤ if(value_1>=70) value_1=70; if(value_1<=-70) value_1=-70; value_2=arduino_speed; LCD_write_number(0,4,value_2);//////////////////////////////////////////////value_2 printf("value_2=:%d\r\n ",value_2);//front_angle ///////////////////////ÉÏÐÐ if(arduino_speed==1) { TIM_SetCompare4(TIM1,100);//////×î´óËÙ¶È ÉÏ 4µµ } else if(arduino_speed==2) { TIM_SetCompare4(TIM1,88);/////// ÉÏ 3µµ } else if(arduino_speed==3) { TIM_SetCompare4(TIM1,76);/////// ÉÏ 2µµ } else if(arduino_speed==4) { TIM_SetCompare4(TIM1,64);/////// ÉÏ 1µµ } else if(arduino_speed==5) { TIM_SetCompare4(TIM1,49);/////////////// ÖмäÍ£ } else if(arduino_speed==6) { TIM_SetCompare4(TIM1,32);/////// Ï 1µµ } else if(arduino_speed==7) { TIM_SetCompare4(TIM1,21);/////// Ï 2µµ } else if(arduino_speed==8) { TIM_SetCompare4(TIM1,10);/////// Ï 3µµ } else if(arduino_speed==9) { TIM_SetCompare4(TIM1,1);//////×î´óËÙ¶È Ï 4µµ } else { TIM_SetCompare4(TIM1,49);///////////////ÖмäÍ£ } } else //// value_5=0 { USART_Cmd(USART3, DISABLE); //¹Ø±Õ USART3 //value_2=5; ///////////////////////ÉÏÐÐ if(value_2==1) { TIM_SetCompare4(TIM1,100);//////×î´óËÙ¶È ÉÏ 4µµ } else if(value_2==2) { TIM_SetCompare4(TIM1,88);/////// ÉÏ 3µµ } else if(value_2==3) { TIM_SetCompare4(TIM1,76);/////// ÉÏ 2µµ } else if(value_2==4) { TIM_SetCompare4(TIM1,64);/////// ÉÏ 1µµ } else if(value_2==5) { TIM_SetCompare4(TIM1,49);/////////////// ÖмäÍ£ } else if(value_2==6) { TIM_SetCompare4(TIM1,32);/////// Ï 1µµ } else if(value_2==7) { TIM_SetCompare4(TIM1,21);/////// Ï 2µµ } else if(value_2==8) { TIM_SetCompare4(TIM1,10);/////// Ï 3µµ } else if(value_2==9) { TIM_SetCompare4(TIM1,1);//////×î´óËÙ¶È Ï 4µµ } else { TIM_SetCompare4(TIM1,49);///////////////ÖмäÍ£ } } adcx=Get_Adc_Average1(ADC_Channel_1,100); adcx1_chazhi=adcx-dianweiqi_zhongzhi; angle=(adcx1_chazhi*90)/1185; judge(value_1);////////////value_1ÆÚÍûµÄ½Ç¶ÈÖµangleÊÇʵ¼ÊµÄ½Ç¶ÈÖµ ///////////////////·¢Ë͵½max°å×ÓµÄÊý¾Ý sprintf(buffer+2,"%.1f,%d,%d,%.1f,%d,",(float)angle,value_1,value_2,WS_speed,WD_direction); for(i=0;i<30;i++) { USART_SendData(USART2, buffer[i]); while(USART_GetFlagStatus(USART2, USART_FLAG_TC) != SET); //·¢ËͶæ»ú½Ç¶ÈÖµ } } IWDG_Feed();//ι¹· }
}
u8 douhao(u8 *buf,u8 cx)
{
u8 *p=buf;
while(cx)
{
if(buf==’‘||buf<’ ‘)return 0XFF;//Óöµ½’‘»òÕß·Ç·¨×Ö·û,Ôò²»´æÔÚµÚcx¸ö¶ººÅ
if(*buf==’,’)cx–;
buf++;
}
return buf-p;
}
void str_Analysis(u8 *buf)
{
u8 posx;
u8 i=0;
char str[10]={0};
posx=douhao(buf,1); if(posx!=0XFF){while(*(posx+buf)!=','){ str[i++]=*(posx+buf); posx++;}i=0;value_1=atoi(str);
memset(str,0,10);
}
//printf(“value_1:%d\r\n”,value_1);
posx=douhao(buf,2); if(posx!=0XFF){while(*(posx+buf)!=','){ str[i++]=*(posx+buf); posx++;}i=0; value_2=atoi(str);memset(str,0,10); } // printf("value_2:%d\r\n",value_2); posx=douhao(buf,3); if(posx!=0XFF){while(*(posx+buf)!=','){ str[i++]=*(posx+buf); posx++;}i=0;value_3=atoi(str);memset(str,0,10); } // printf("value_3:%d\r\n",value_3);posx=douhao(buf,4); if(posx!=0XFF){while(*(posx+buf)!=','){ str[i++]=*(posx+buf); posx++;}i=0;value_4=atoi(str);memset(str,0,10); } //printf("value_4:%d\r\n",value_4);posx=douhao(buf,5); if(posx!=0XFF){while(*(posx+buf)!=','){ str[i++]=*(posx+buf); posx++;}i=0;value_5=atoi(str);memset(str,0,10); } //printf("value_5:%d\r\n",value_5);posx=douhao(buf,6); if(posx!=0XFF){ delta=atof(buf+posx); } //printf("delta:%f\r\n",delta);// printf("%s",buf);
}
void judge(int16_t temp)
{
int32_t err_kuoda=0;
int16_t err_angle=0;
int16_t err_angle_fan=0;
err=temp-angle;
//printf(“angle=%d\r\n”,angle);
//printf(“temp=%d\r\n”,temp);
err_kuoda=err*14;
//printf(“err=%d\r\n”,err);
// printf(“err_kuoda=%d\r\n”,err_kuoda);
//if(err_kuoda>0)
//{
if(err_kuoda>=800&&err_kuoda<900)////50 du
{
err_angle=50;
// GPIO_SetBits(GPIOA,GPIO_Pin_5);
// TIM2_TIM3_PWM(500,400);/////2000¸öÂö³å 500ÊÇ0.5ms
} else if(err_kuoda>=650&&err_kuoda<800)/////40 du { err_angle=40; //GPIO_SetBits(GPIOA,GPIO_Pin_5); // TIM2_TIM3_PWM(500,400);/////2000¸öÂö³å 500ÊÇ0.5ms } else if(err_kuoda>=520&&err_kuoda<650)/////30 du { err_angle=30; //GPIO_SetBits(GPIOA,GPIO_Pin_5); //TIM2_TIM3_PWM(500,400);/////2000¸öÂö³å 500ÊÇ0.5ms } else if(err_kuoda>=390&&err_kuoda<520)/////20 du { err_angle=20; //GPIO_SetBits(GPIOA,GPIO_Pin_5); //TIM2_TIM3_PWM(500,400);/////2000¸öÂö³å 500ÊÇ0.5ms } else if(err_kuoda>=260&&err_kuoda<390)/////10 du { err_angle=10; //GPIO_SetBits(GPIOA,GPIO_Pin_5); //TIM2_TIM3_PWM(500,400);/////2000¸öÂö³å 500ÊÇ0.5ms } else if(err_kuoda>=130&&err_kuoda<260)/////5 du { err_angle=5; // GPIO_SetBits(GPIOA,GPIO_Pin_5); //TIM2_TIM3_PWM(500,200);/////2000¸öÂö³å 500ÊÇ0.5ms } else if(err_kuoda>=13) { err_angle=1; // GPIO_SetBit //GPIO_SetBits(GPIOA,GPIO_Pin_5); // TIM2_TIM3_PWM(500,40);/////2000¸öÂö³å 500ÊÇ0.5ms } else { err_angle=0; } switch(err_angle) { case 50: GPIO_SetBits(GPIOA,GPIO_Pin_5); TIM2_TIM3_PWM(500,400); break;/////2000¸öÂö³å 500ÊÇ0.5ms case 40: GPIO_SetBits(GPIOA,GPIO_Pin_5); TIM2_TIM3_PWM(500,400); break;/////2000¸öÂö³å 500ÊÇ0.5ms case 30: GPIO_SetBits(GPIOA,GPIO_Pin_5); TIM2_TIM3_PWM(500,400); break;/////2000¸öÂö³å 500ÊÇ0.5ms case 20: GPIO_SetBits(GPIOA,GPIO_Pin_5); TIM2_TIM3_PWM(500,400); break;/////2000¸öÂö³å 500ÊÇ0.5ms case 10: GPIO_SetBits(GPIOA,GPIO_Pin_5); TIM2_TIM3_PWM(500,400); break;/////2000¸öÂö³å 500ÊÇ0.5ms case 5: GPIO_SetBits(GPIOA,GPIO_Pin_5); TIM2_TIM3_PWM(500,200); break;/////2000¸öÂö³å 500ÊÇ0.5ms case 1: GPIO_SetBits(GPIOA,GPIO_Pin_5); TIM2_TIM3_PWM(500,40); break;/////2000¸öÂö³å 500ÊÇ0.5ms default:break; } if(err_kuoda<=-780)//////////50du { err_angle_fan=50; // GPIO_ResetBits(GPIOA,GPIO_Pin_5); // TIM2_TIM3_PWM(500,2000); } else if(err_kuoda>-780&&err_kuoda<-650)/////-40du { err_angle_fan=40; // GPIO_ResetBits(GPIOA,GPIO_Pin_5); // TIM2_TIM3_PWM(500,1600);} else if(err_kuoda>=-650&&err_kuoda<-520)/////-30du { err_angle_fan=30; ///TIM2_TIM3_PWM(500,1200);} else if(err_kuoda>=-520&&err_kuoda<-390)/////-20du { err_angle_fan=20; //GPIO_ResetBits(GPIOA,GPIO_Pin_5); //TIM2_TIM3_PWM(500,800);} else if(err_kuoda>=-390&&err_kuoda<-260)/////-10du { err_angle_fan=10; //GPIO_ResetBits(GPIOA,GPIO_Pin_5); ///TIM2_TIM3_PWM(500,400);}else if(err_kuoda>=-260&&err_kuoda<-130)/////-5du { err_angle_fan=5; //GPIO_ResetBits(GPIOA,GPIO_Pin_5); //TIM2_TIM3_PWM(500,200);} else if(err_kuoda<=-13)//// { err_angle_fan=1; //GPIO_ResetBits(GPIOA,GPIO_Pin_5); //TIM2_TIM3_PWM(500,40); } else { err_angle_fan=0;} switch(err_angle_fan) { case 50: GPIO_ResetBits(GPIOA,GPIO_Pin_5); TIM2_TIM3_PWM(500,400); break;/////2000¸öÂö³å 500ÊÇ0.5ms case 40: GPIO_ResetBits(GPIOA,GPIO_Pin_5); TIM2_TIM3_PWM(500,400); break;/////2000¸öÂö³å 500ÊÇ0.5ms case 30: GPIO_ResetBits(GPIOA,GPIO_Pin_5); TIM2_TIM3_PWM(500,400); break;/////2000¸öÂö³å 500ÊÇ0.5ms case 20: GPIO_ResetBits(GPIOA,GPIO_Pin_5); TIM2_TIM3_PWM(500,400); break;/////2000¸öÂö³å 500ÊÇ0.5ms case 10: GPIO_ResetBits(GPIOA,GPIO_Pin_5); TIM2_TIM3_PWM(500,400); break;/////2000¸öÂö³å 500ÊÇ0.5ms case 5: GPIO_ResetBits(GPIOA,GPIO_Pin_5); TIM2_TIM3_PWM(500,200); break;/////2000¸öÂö³å 500ÊÇ0.5ms case 1: GPIO_ResetBits(GPIOA,GPIO_Pin_5); TIM2_TIM3_PWM(500,40); break;/////2000¸öÂö³å 500ÊÇ0.5ms default:break; }
}
“`
- deal,电机
- 电机
- deal sea
- bam deal
- What a big deal
- Microsoft, ready to Deal
- 密室交易 backroom deal
- strcpy deal with overlapping
- android error deal with
- loan deal/loan facility
- zoj 2677 Oil Deal
- python deal with mysql
- 使用Deal.II过程
- 步进电机
- 步进电机
- 伺服电机
- 步进电机
- 步进电机
- 欢迎使用CSDN-markdown编辑器
- Google Breakpad 在 windows下捕获程序崩溃报告
- Java集合Collection总结
- okhttp的使用
- 选择率和基数简析
- deal,电机
- 前端面试题整理-------HTML/CSS部分----小知识点
- 算法训练 s01串
- WebSocket简单介绍
- jQuery点击隐藏和显示
- 线程安全
- 字符数组3
- okhttp的使用
- 提高篇项目3.1-求四个数的最大公约数