智能循迹小车程序代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/****************************************************************

************

硬件连接

P1_4接驱动模块ENA使能端,输入PWM信号调节速度

P1_5接驱动模块ENB使能端,输入PWM信号调节速度

P1_0 P1_1接IN1 IN2 当P1_0=1,P1_1=0; 时左电机正转驱动蓝色输出

端OUT1 OUT2接左电机

P1_0 P1_1接IN1 IN2 当P1_0=0,P1_1=1; 时左电机反转

P1_2 P1_3接IN3 IN4 当P1_2=1,P1_3=0; 时右电机正转驱动蓝色输出

端OUT3 OUT4接右电机

P1_2 P1_3接IN3 IN4 当P1_2=0,P1_3=1; 时右电机反转

P1_0接四路寻迹模块接口第一路输出信号即中控板上面标记为OUT1

P1_1接四路寻迹模块接口第二路输出信号即中控板上面标记为OUT2

P1_2接四路寻迹模块接口第三路输出信号即中控板上面标记为OUT3

P1_3接四路寻迹模块接口第四路输出信号即中控板上面标记为OUT4

八路寻迹传感器有信号(白线)为0 没有信号(黑线)为1

*****************************************************************

***********/

#include

#define Right_moto_pwm P1_4 //接驱动模块ENA使能端,输入PWM

信号调节速度

#define Left_moto_pwm P1_5 //接驱动模块ENB使能端,输入PWM 信号调节速度

#define Left_1_led P2_0 //四路寻迹模块接口第一路

#define Left_2_led P2_1 //四路寻迹模块接口第二路

#define Right_1_led P2_2 //四路寻迹模块接口第三路

#define Right_2_led P2_3 //四路寻迹模块接口第四路

#define Left_moto_go {P1_0=0,P1_1=1;} //左电机前进

#define Left_moto_back {P1_0=1,P1_1=0;} //左电机后退

#define Left_moto_stop {P1_0=1,P1_1=1;} //左电机停转

#define Right_moto_go {P1_2=0,P1_3=1;} //右电机前转

#define Right_moto_back {P1_2=1,P1_3=0;} //右电机后退

#define Right_moto_stop {P1_2=1,P1_3=1;} //右电机停转

#define uchar unsigned char

#define uint unsigned int

uchar pwm_val_left =0;

uchar push_val_left =0; //左电机占空比N/10

uchar pwm_val_right =0;

uchar push_val_right=0; //右电机占空比N/10

bit Right_moto_stp=1;

bit Left_moto_stp =1;

/**************************************************************** ********/

void run(void)//前进函数

{

push_val_left =13; //PWM 调节参数1-20 1为最慢,20是最快改这个值可以改变其速度

push_val_right =15; //PWM 调节参数1-20 1为最慢,20是最快改这个值可以改变其速度

Left_moto_go ;//左电机前进

Right_moto_go ; //右电机前进

}

/**************************************************************** ********/

void left(void) //左转函数

{

push_val_left =8;

push_val_right =9;

Right_moto_go;//右电机继续

Left_moto_stop;//左电机停走

}

/********************************************************************

****/

void right(void)//右转函数

{

push_val_left =8;

push_val_right =9;

Right_moto_stop;//右电机停走

Left_moto_go;//左电机继续

}

void Delayms(uint x)

{

uchar i;

while(x--)for(i=0;i<120;i++);

}

void stop(void)

{

Right_moto_stop;//右电机停走

Left_moto_stop;//左电机停走

Delayms(3000);

run();

Delayms(100);

}

/*************************PWM调制电机转速********************************/

void pwm_out_left_moto(void) //左电机调速,调节push_val_left的值改变电机转速,占空比

{

if(Left_moto_stp)

{

if(pwm_val_left<=push_val_left)

Left_moto_pwm=1;

else

Left_moto_pwm=0;

相关文档
最新文档