#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
#include "Motor.h"
#include "Servo.h"
#include "uart.h"
#include "PWM.h"
u16 Cx,Cy;
/**************************************************************************
摄像头传输数据 A为角度正负
B为角度大小
C,D,E分别为三个标志位(摄像头视野里总左向右依次三个)
F为停车标志位
**************************************************************************/
int a=0;
int b=0;
int c=0;
float Angle;
int main(void)
{
/**********************************************
定义蜂鸣器io口
**********************************************/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitTypeDef GPIO_Initstructure;
GPIO_Initstructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Initstructure.GPIO_Pin = GPIO_Pin_12;
GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_Initstructure);
GPIO_SetBits(GPIOB,GPIO_Pin_12);
Servo_Init();
Motor_Init1();
Motor_Init2();
USART1_Init();
OLED_Init();
while (1)
{
Servo_SetAngle(Angle);
// OLED_ShowSignedNum(1, 1, B, 3);
//
// OLED_ShowSignedNum(1, 6, C, 3);
// OLED_ShowSignedNum(2, 1, D, 3);
// OLED_ShowSignedNum(2, 6, E, 3);
//
// OLED_ShowSignedNum(3, 1, F, 3);
//
// OLED_ShowSignedNum(3, 6, a, 3);
/**********************************************
驱动
**********************************************/
if(F==1)//识别标志变量复复赋值
{
b=1;
}
if(b==0)//电机占空比
{
Motor_SetSpeed1(40);
Motor_SetSpeed2(40);
}
else if(b==1)//识别到标志位停车,蜂鸣器和灯光响应
{
Motor_SetSpeed1(0);
Motor_SetSpeed2(0);
GPIO_ResetBits(GPIOB,GPIO_Pin_12);
Delay_s(1);
GPIO_SetBits(GPIOB,GPIO_Pin_12);
Delay_s(6000);
}
/*******************************************
识别岔路第一次忽略第二次进入
*******************************************/
if(D==1&&E==1&&a==0)
{
Angle=0;
Delay_ms(800);
a++;
}
else
{
Angle=B;
}
}
}