main.c
来自「通过智能车上的CCD摄像头采集道路状况」· C语言 代码 · 共 1,391 行 · 第 1/3 页
C
1,391 行
}
else if(AngleWay<6){ //弯,减速
if(Samplespeed>105){
PWMDTY1=10;
}
if(Samplespeed<105) //加速
PWMDTY1=90;
}
else if(AngleWay<9){ //弯,减速
if(Samplespeed>105){
PTP_PTP0=1;
PWMDTY1=30;
}
if(Samplespeed<105) //加速
PWMDTY1=90;
}
else if(AngleWay<13){ //弯,减速
if(Samplespeed>90){
PTP_PTP0=1;
PWMDTY1=10 ;
}
if(Samplespeed<90) //加速
PWMDTY1=80;
}
else if(AngleWay<18){ //弯,减速
if(Samplespeed>85){
PTP_PTP0=1;
PWMDTY1=10 ;
}
if(Samplespeed<85) //加速
PWMDTY1=90;
} else if(AngleWay<25){ //弯,减速
if(Samplespeed>80){
PTP_PTP0=1;
PWMDTY1=10 ;
}
if(Samplespeed<80) //加速
PWMDTY1=90;
}
else if(AngleWay<30){ //弯,减速
if(Samplespeed>80){
PTP_PTP0=1;
PWMDTY1=30;
}
if(Samplespeed<80) //加速
PWMDTY1=80;
}
else if(AngleWay<38){ //弯,减速
if(Samplespeed>75){
PTP_PTP0=1;
PWMDTY1=20 ;
}
if(Samplespeed<75) //加速
PWMDTY1=80;
}
else if(AngleWay<45){ //弯,减速
if(Samplespeed>73){
PTP_PTP0=1;
PWMDTY1=10 ;
}
if(Samplespeed<73) //加速
PWMDTY1=80;
}
else{ //弯,减速
if(Samplespeed>70){
PWMDTY1=10 ;
}
if(Samplespeed<70) //加速
PWMDTY1=65;
}
}
else if(top<4){
if(AngleWay<26){ //弯,减速
if(Samplespeed>85)
PWMDTY1=0;
if(Samplespeed<85) //加速
PWMDTY1=80;
} else if(AngleWay<50){ //弯,减速
if(Samplespeed>80)
PWMDTY1=0;
if(Samplespeed<80) //加速
PWMDTY1=80;
} else{ //弯,减速
PWMDTY1=70;
}
} else{
PWMDTY1=65;
}
}
else {
PWMDTY1=60;
}
}
//*******************************************************//
void SpeedControl1(void){
//zhang zui disu //张恒低速
PTP_PTP0=0;
if(top<12) {
if(errWay>-2){
if((errWay<2)||(s1==1&&s2==1)){
if(Samplespeed<95) //直,可加速
PWMDTY1=100;
if(Samplespeed>95) // /减速
PWMDTY1=60;
}
else if(errWay<7){ //s弯
if(Samplespeed>92)
PWMDTY1=60;
if(Samplespeed<92) //加速
PWMDTY1=95;
}
else if(errWay<12){ //弯,减速
if(Samplespeed>85)
PWMDTY1=0;
if(Samplespeed<85) //加速
PWMDTY1=95;
}
else if(errWay<35){ //弯,减速
if(Samplespeed>83){
PTP_PTP0=1;
PWMDTY1=30;
}
if(Samplespeed<83) //加速
PWMDTY1=65;
}
else{ //弯,减速
if(Samplespeed>86)
PWMDTY1=0;
if(Samplespeed<86) //加速
PWMDTY1=65;
}
}
else {
if(errWay>-5){
if(Samplespeed<95) //直,可加速
PWMDTY1=100;
if(Samplespeed>95) // /减速
PWMDTY1=50;
}
else if(errWay>-10){ //弯,减速
if(Samplespeed>90)
PWMDTY1=30;
if(Samplespeed<90) //加速
PWMDTY1=90;
}
else if(errWay>-15){ //弯,减速
if(Samplespeed>90)
PWMDTY1=20;
if(Samplespeed<90) //加速
PWMDTY1=90;
}
else if(errWay>-35){ //弯,减速
if(Samplespeed>85)
PWMDTY1=10;
if(Samplespeed<85) //加速
PWMDTY1=75;
}
else{ //弯,减速
if(Samplespeed>82)
PWMDTY1=0;
if(Samplespeed<82) //加速
PWMDTY1=70;
}
}
}
else{ //弯,减速
if(Samplespeed>83)
PWMDTY1=0;
if(Samplespeed<83) //加速
PWMDTY1=65;
}
}
//***************************************************//
void SpeedControl2(void){
//张恒 中速
PTP_PTP0=0;
if(top<12) {
if(errWay>-2){
if((errWay<2)||(s1==1&&s2==1)){
if(Samplespeed<100) //直,可加速
PWMDTY1=100;
if(Samplespeed>100) // /减速
PWMDTY1=60;
}
else if(errWay<7){ //s弯
if(Samplespeed>93)
PWMDTY1=60;
if(Samplespeed<93) //加速
PWMDTY1=97;
}
else if(errWay<12){ //弯,减速
if(Samplespeed>88)
PWMDTY1=0;
if(Samplespeed<88) //加速
PWMDTY1=95;
}
else if(errWay<35){ //弯,减速
if(Samplespeed>85){
PTP_PTP0=1;
PWMDTY1=25;
}
if(Samplespeed<85) //加速
PWMDTY1=65;
}
else{ //弯,减速
if(Samplespeed>88)
PWMDTY1=0;
if(Samplespeed<88) //加速
PWMDTY1=65;
}
}
else {
if(errWay>-5){
if(Samplespeed<100) //直,可加速
PWMDTY1=100;
if(Samplespeed>100) // /减速
PWMDTY1=50;
}
else if(errWay>-10){ //弯,减速
if(Samplespeed>90)
PWMDTY1=30;
if(Samplespeed<90) //加速
PWMDTY1=90;
}
else if(errWay>-15){ //弯,减速
if(Samplespeed>90)
PWMDTY1=20;
if(Samplespeed<90) //加速
PWMDTY1=90;
}
else if(errWay>-35){ //弯,减速
if(Samplespeed>85)
PWMDTY1=10;
if(Samplespeed<85) //加速
PWMDTY1=80;
}
else{ //弯,减速
if(Samplespeed>82)
PWMDTY1=0;
if(Samplespeed<82) //加速
PWMDTY1=70;
}
}
}
else{ //弯,减速
if(Samplespeed>83)
PWMDTY1=0;
if(Samplespeed<83) //加速
PWMDTY1=67;
}
}
//***************************************************//
void SpeedControl3(void){ //张恒 最高速
PTP_PTP0=0;
if(top<12) {
if(errWay>-2){
if((errWay<2)||(s1==1&&s2==1)){
if(Samplespeed<105) //直,可加速
PWMDTY1=100;
if(Samplespeed>105) // /减速
PWMDTY1=60;
}
else if(errWay<6){ //s弯
if(Samplespeed>97)
PWMDTY1=20;
if(Samplespeed<97) //加速
PWMDTY1=100;
}
else if(errWay<13){ //弯,减速
if(Samplespeed>92)
PWMDTY1=0;
if(Samplespeed<92) //加速
PWMDTY1=80;
}
else if(errWay<38){ //弯,减速
if(Samplespeed>88) {
PTP_PTP0=1;
PWMDTY1=20;
}
if(Samplespeed<88) //加速
PWMDTY1=67;
}
else{ //弯,减速
if(Samplespeed>89)
PWMDTY1=0;
if(Samplespeed<89) //加速
PWMDTY1=67;
}
}
else {
if(errWay>-5){
if(Samplespeed<105) //直,可加速
PWMDTY1=100;
if(Samplespeed>105) // /减速
PWMDTY1=50;
}
else if(errWay>-10){ //弯,减速
if(Samplespeed>100)
PWMDTY1=30;
if(Samplespeed<100) //加速
PWMDTY1=90;
}
else if(errWay>-15){ //弯,减速
if(Samplespeed>90)
PWMDTY1=20;
if(Samplespeed<90) //加速
PWMDTY1=90;
}
else if(errWay>-35){ //弯,减速
if(Samplespeed>86)
PWMDTY1=10;
if(Samplespeed<86) //加速
PWMDTY1=80;
}
else{ //弯,减速
if(Samplespeed>87)
PWMDTY1=0;
if(Samplespeed<87) //加速
PWMDTY1=70;
}
}
}
else{ //弯,减速
if(Samplespeed>84)
PWMDTY1=0;
if(Samplespeed<84) //加速
PWMDTY1=67;
}
}
//*************************Brake*************************************//
void Brake(void){
if(Samplespeed>15) {
PTP_PTP0=1;
PWMDTY1=30;
}
else
PWMDTY1=100;
}
//*********************Main function**********************************//
void main(void) {
BUSCLK_init() ;
TIE_C6I=0;
DDRS=0x00;
DDRB=0x00; //拨码输入
DDRA=0xff;
Switch();
SpeedSample();
Init_servo();
Init_motor();
//DDRP_DDRP7=1; //PWM7 Latch
DDRP_DDRP0=1; //PWM0
PTP_PTP0=0; //正转
EnableInterrupts;
for(;;){
TFLG1_C6F=1;
TFLG1_C2F=1;
ImageGetting();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?