佚名通过本文主要向大家介绍了循迹避障智能小车,智能小车摄像头循迹,循迹小车淘宝,用摄像头的循迹小车,循迹小车等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于循迹小车的问题
描述:
/*循迹实验,一定要注意好的是速度的调整,否则会出现直接跑出你所在的循迹的范围*/
sbit IN1=P1^2;
sbit IN2=P1^3;
sbit ENA=P1^4;
sbit ENB=P1^5;
sbit IN3=P1^6;
sbit IN4=P1^7;
sbit zuo=P0^4;
sbit you=P0^5;
void delay(unsigned char m)
{
while(--m);
}
void delays(unsigned char t)
{
while(t--)
{
delay(245);
delay(245);
}
}
void head()//前进
{
unsigned char i;
for(i=0;i<6;i++)//PWM调速,占空比大约是2/3
{
IN1=0;
IN2=1;
IN3=1;
IN4=0;
ENA=1;
ENB=1;
}
for(i=0;i<4;i++)
{
IN1=1;
IN2=1;
IN3=1;
IN4=1;
ENA=1;
ENB=1;
}
}
void turnright()//向右转
{
unsigned char i;
for(i=0;i<6;i++)//PWM调速, 占空比是大约2/3
{
IN3=1;
IN4=0;
ENB=1;
}
for(i=0;i<4;i++)
{
IN3=1;
IN4=1;
ENB=1;
}
}
void turnleft()//向左转
{
unsigned char i;
for(i=0;i<6;i++)//PWM调速, 占空比大约是2/3
{
IN1=0;
IN2=1;
ENA=1;
}
for(i=0;i<4;i++)
{
IN1=1;
IN2=1;
ENA=1;
}
}
void zuozhuan()
{
unsigned char i,time;
for(i=0;i<10;i++)//PWM调速, 占空比大约是2/3
{
IN1=0;
IN2=1;
ENA=1;
}
for(i=0;i<5;i++)
{
IN1=1;
IN2=1;
ENA=1;
}
}
void main()
{
static unsigned char time=1;
while(1)
{
if(zuo==0&&you==0)//0是接受到黑线,1是白线
{
head();
}
else if(zuo==1&&you==0)
{
turnright();
}
else if(zuo==0&&you==1)
{
turnleft();
}
else if(zuo==1&&you==1)
{
if(time==0)
{
zuozhuan();
}
else
{
turnright();
time=0;
}
time++;
}
}
}
描述:
单片机智能小车
#include "reg52.h"/*循迹实验,一定要注意好的是速度的调整,否则会出现直接跑出你所在的循迹的范围*/
sbit IN1=P1^2;
sbit IN2=P1^3;
sbit ENA=P1^4;
sbit ENB=P1^5;
sbit IN3=P1^6;
sbit IN4=P1^7;
sbit zuo=P0^4;
sbit you=P0^5;
void delay(unsigned char m)
{
while(--m);
}
void delays(unsigned char t)
{
while(t--)
{
delay(245);
delay(245);
}
}
void head()//前进
{
unsigned char i;
for(i=0;i<6;i++)//PWM调速,占空比大约是2/3
{
IN1=0;
IN2=1;
IN3=1;
IN4=0;
ENA=1;
ENB=1;
}
for(i=0;i<4;i++)
{
IN1=1;
IN2=1;
IN3=1;
IN4=1;
ENA=1;
ENB=1;
}
}
void turnright()//向右转
{
unsigned char i;
for(i=0;i<6;i++)//PWM调速, 占空比是大约2/3
{
IN3=1;
IN4=0;
ENB=1;
}
for(i=0;i<4;i++)
{
IN3=1;
IN4=1;
ENB=1;
}
}
void turnleft()//向左转
{
unsigned char i;
for(i=0;i<6;i++)//PWM调速, 占空比大约是2/3
{
IN1=0;
IN2=1;
ENA=1;
}
for(i=0;i<4;i++)
{
IN1=1;
IN2=1;
ENA=1;
}
}
void zuozhuan()
{
unsigned char i,time;
for(i=0;i<10;i++)//PWM调速, 占空比大约是2/3
{
IN1=0;
IN2=1;
ENA=1;
}
for(i=0;i<5;i++)
{
IN1=1;
IN2=1;
ENA=1;
}
}
void main()
{
static unsigned char time=1;
while(1)
{
if(zuo==0&&you==0)//0是接受到黑线,1是白线
{
head();
}
else if(zuo==1&&you==0)
{
turnright();
}
else if(zuo==0&&you==1)
{
turnleft();
}
else if(zuo==1&&you==1)
{
if(time==0)
{
zuozhuan();
}
else
{
turnright();
time=0;
}
time++;
}
}
}