适合新手学习。
单片机源程序如下:
- #include "delay.h"
- #include "sys.h"
- #include "usart.h"
- #include "timer.h"
- #include "red.h"
- #include "stm32f10x_gpio.h"
- //********************************************
- //Stm32F103zet6 循迹小车小车程序
- //********************************************
- int main(void)
- {
- RED_GPIO_Init();
- delay_init(); //延时函数初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
- uart_init(115200); //串口初始化为115200
- TIM3_PWM_Init(899,0); //不分频。PWM频率=72000000/900=80Khz
-
-
- while(1)
- {
- //左黑右白中间白 左转
- if(LRED==1 && MRED==0 && RRED==0 )
- {
- TIM_SetCompare1(TIM3,370); //改变PWM波,以此来改变改变小车的速度。
- TIM_SetCompare2(TIM3,190);
- IN3 = 1 ;
- IN4 = 0 ;
- IN1 = 1 ;
- IN2 = 0 ;//左右轮正转
- }
- //左白右黑 中间白 右转
- if(LRED==0 && MRED==0 && RRED==1 )
- {
- TIM_SetCompare1(TIM3,190); //差速
- TIM_SetCompare2(TIM3,370);
- IN3 = 1 ;
- IN4 = 0;
- IN1 = 1 ;
- IN2 = 0 ; //左右轮正转
- }
- //两边白中间黑,直行!
- if(LRED==0 && MRED==1 && RRED==0 )
- {
- TIM_SetCompare1(TIM3,170);
- TIM_SetCompare2(TIM3,170);
- IN3 = 1 ;
- IN4 = 0 ; //左轮正转
- IN1 = 1 ;
- IN2 = 0 ;//右轮正转
- delay_ms(5);
- }
- //两边黑 直行
- if( LRED==1 && RRED==1 )
- {
- TIM_SetCompare1(TIM3,180);
- TIM_SetCompare2(TIM3,180);
- IN3 = 1 ;
- IN4 = 0 ;
- IN1 = 1 ;
- IN2 = 0 ;//左右轮正转
- delay_ms(5);
- }
- //左中黑, 直行
- if( LRED==1 && MRED==1 )
- {
- TIM_SetCompare1(TIM3,170);
- TIM_SetCompare2(TIM3,170);
- IN3 = 1 ;
- IN4 = 0 ;
- IN1 = 1 ;
- IN2 = 0 ;//左右轮正转
- delay_ms(5);
- }
- //右中黑,直行
- if( RRED==1 && MRED==1 )
- {
- TIM_SetCompare1(TIM3,170);
- TIM_SetCompare2(TIM3,170);
- IN3 = 1 ;
- IN4 = 0 ;
- IN1 = 1 ;
- IN2 = 0 ;//左右轮正转
- delay_ms(5);
- }
- // delay_ms(10);
- if( RRED==1 && MRED==1 && LRED==1 )
- {
- TIM_SetCompare1(TIM3,170);
- TIM_SetCompare2(TIM3,170);
- IN3 = 1 ;
- IN4 = 0 ;
- IN1 = 1 ;
- IN2 = 0 ;//左右轮正转
- delay_ms(5);
- }
- }
-
- }
复制代码
所有资料51hei提供下载:
寻迹小车程序.7z
(186.21 KB, 下载次数: 96)
|