智能小车舵机转向程序

智能小车舵机转向程序,第1张

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

uint count

uchar jd

sbit le1=P1^0//*光电传感器*//

sbit PWM=P3^5//舵机pwm//

init()

{

TMOD=0x01//设定定时器

TH0 = 0xFE

TL0 = 0x0c//设定定时初始值

EA=1

ET0=1

TR0=1

}

void delay(uint z) //延时

{

uint x,y

for(x=zx>0x--)

for(y=125y>0y--)

}

void timer0() interrupt 1 //产生pwm信号控制舵机,周期20ms

{

TH0 = 0xFE

TL0 = 0x0c //设定定时初始值

if(count<jd) //判断0.5ms次数是否小于角度标识

{

PWM=1 //确定小于,pwm输出高电平

// delay(180) //延时一会,可以减慢舵机转速

}

else

PWM=0 //大于则输出低电平

count=count+1 //0.5ms次数加1

count=count%40 //次数始终保持为40即保持周期为20ms

}

void xunji()//循迹函数,读取光电管状态

{

if(le1!=0)

{

delay(10)

if(le1==0)

{

jd++

count=0

while(le1==0)

}

} //分析光电管状态,看你的电路检测到黑线输出1或者是0

else

{

count=0

jd=3 //舵机归中

}

}

void main()

{

jd=3 //角度初始化90°: 1=0.5ms 舵机为0° 2=1ms 舵机为45°3、4、5、同上

count=0 //初始化赋值零

init() //定时器初始化

while(1)

{

xunji() //舵机检测

}

}

一般小车转弯分若干种

1。三轮式

1.1两个动力轮,一个辅助轮

举例 玩具小车

两个动力轮同时转动,前进或后退

两个动力轮反向转动或者转动速度不同,转向

1.2两个辅助轮,一个动力轮

前轮有动力而且可以转向

这就要用两个电机控制前轮。一个控制前轮的速度,一个控制前轮转过的角度。

1.3两个动力轮,一个转向轮

举例 三轮车

两个后轮转动方向和速度完全一样,靠前轮转动一定的角度来转向。

2。四轮

2.1两个动力轮,两个转向轮

举例 后轮驱动汽车

前面两轮负责转向,后面两轮负责提供动力。

2.2两个动力轮,两个辅助轮

四个轮子呈菱形布置,两个动力轮在对角线上。两个动力轮转速相同时前进或后退,两个动力轮转速不同或者转动方向相反时转向。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11153232.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存