智能小车舵机转向程序

智能小车舵机转向程序,第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、以上程序写在串口中断中,读串口BUFF数据赋给a变量

2、手机app与单片机蓝牙进行连接

3、设置相同波特率、停止位、校验码

4、app发送字符型的‘3’,‘4’,‘5’

分两步吧,一重力感应; 二蓝牙通讯

前者是根据重力的偏角,得到数据,传送到小车。这个没有舵机,比较难做。你可以用各驱动轮使用PWM模拟。

蓝牙通讯,在SDK 中就有完整的例子


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

原文地址: https://outofmemory.cn/yw/12071791.html

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

发表评论

登录后才能评论

评论列表(0条)

保存