適合新手學習。
單片機源程序如下:
- #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
|