标题:
基于stm32f103zet6的红外对管循迹小车
[打印本页]
作者:
一个土豆
时间:
2019-8-1 21:22
标题:
基于stm32f103zet6的红外对管循迹小车
适合新手学习。
单片机源程序如下:
#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)
2019-8-2 04:25 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1