智能循迹小车程序代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;