标题:
求助 两个红外的智能小车的源代码
[打印本页]
作者:
Rude
时间:
2017-11-10 12:27
标题:
求助 两个红外的智能小车的源代码
本人大一,参加了学校的智能小车赛, 但是对于编程还是不太会,求助各位大佬。 可以不避障
作者:
songlianzhai
时间:
2017-11-10 13:47
说一下大概思路
作者:
361135159
时间:
2017-11-10 14:01
#include "nRF24L01.h"
uchar TX_ADDRESS[TX_ADR_WIDTH]={0xFF,0xFF,0xFF,0xFF,0xFF}; //发送地址
uchar RX_ADDRESS[RX_ADR_WIDTH]={0xFF,0xFF,0xFF,0xFF,0xFF}; //接收地址
uchar rate = 0x0F; //2Mbs, 0dB 低噪声增益开启
//--定义一个全局变量--//
unsigned char timer1;
void Time1Config();
sbit L1 =P3^4; //驱动模块in1,2,3.4
sbit L2 =P3^5;
sbit R1 =P3^6;
sbit R2 =P3^7;
sbit m1 =P2^1;
sbit m2 =P2^0;
sbit h1 =P2^2;
sbit PWM1=P3^4;
sbit PWM2=P3^5;
sbit PWM3=P3^6;
sbit PWM4=P3^7;
uchar rece_buf[32]; //接收寄存器
//int num,S=0,time=0,timer=0; //a0=37:最大角度,脉宽1.899ms
void delay(uint t)
{
uint a,b;
for(a=0;a<t;a++)
for (b=0;b<110;b++);
}// 寻迹
void Time1(void) interrupt 3 //3 为定时器1的中断号 1 定时器0的中断号 0 外部中断1 2 外部中断2 4 串口中断
{
TH1 = 0xFE; //重新赋初值
TL1 = 0x0C;
timer1++;
}
void Time1Config()
{
TMOD|= 0x10; //设置定时计数器工作方式1为定时器
//--定时器赋初始值,12MHZ下定时0.5ms--//
TH1 = 0xFE;
TL1 = 0x0C;
ET1 = 1; //开启定时器1中断
EA = 1;
TR1 = 1; //开启定时器
}
void main()
{
int i,t;
//寻迹
Time1Config();
while(1)
{
if(h1==1)
{
if(timer1>60) //PWM周期为100*0.5ms
{
timer1=0;
}
if(timer1 <60) //改变30这个值可以改变直流电机的速度
{
PWM1=0;
PWM2=1;
PWM3=0;
PWM4=1;
delay(100);
}
else
{
PWM1=0;
PWM2=0;
PWM3=0;
PWM4=0;
}
}
else if(m1==0&&m2==0) //第1位以后是收到的命令数据,rece_buf[0]是数据位数长度
{
if(timer1>100) //PWM周期为100*0.5ms
{
timer1=0;
}
if(timer1 <15) //改变30这个值可以改变直流电机的速度
{
PWM1=1;
PWM2=0;
PWM3=0;
PWM4=1;
}
else
{
PWM1=0;
PWM2=0;
PWM3=0;
PWM4=0;
}
}
else if(m1==1&&m2==1) //第1位以后是收到的命令数据,rece_buf[0]是数据位数长度
{
if(timer1>100) //PWM周期为100*0.5ms
{
timer1=0;
}
if(timer1 <15) //改变30这个值可以改变直流电机的速度
{
PWM1=0;
PWM2=1;
PWM3=1;
PWM4=0;
}
else
{
PWM1=0;
PWM2=0;
PWM3=0;
PWM4=0;
}
}
else if(m1==1&&m2==0) //第1位以后是收到的命令数据,rece_buf[0]是数据位数长度
{
L1 =0;
L2 =1;
R1 =1;
R2 =0;
delay(10);
if(timer1>60) //PWM周期为100*0.5ms
{
timer1=0;
}
if(timer1 <60) //改变30这个值可以改变直流电机的速度
{
PWM1=1;
PWM2=0;
PWM3=1;
PWM4=0; }
else
{
PWM1=0;
PWM2=0;
PWM3=0;
PWM4=0;
}
}
else if(m1==0&&m2==1) //第1位以后是收到的命令数据,rece_buf[0]是数据位数长度
{
L1 =0;
L2 =1;
R1 =1;
R2 =0;
delay(10);
if(timer1>60) //PWM周期为100*0.5ms
{
timer1=0;
}
if(timer1 <60) //改变30这个值可以改变直流电机的速度
{
PWM1=0;
PWM2=1;
PWM3=0;
PWM4=1;
}
else
{
PWM1=0;
PWM2=0;
PWM3=0;
PWM4=0;
}
}
delay(20);
}
作者:
krwlng
时间:
2017-11-10 19:17
3.例程代码.rar
(5.31 KB, 下载次数: 3)
2017-11-10 19:17 上传
点击文件名下载附件
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1