标题:
基于nRF24L01的2.4G遥控车51单片机源程序
[打印本页]
作者:
oakbcy
时间:
2017-9-27 19:09
标题:
基于nRF24L01的2.4G遥控车51单片机源程序
基于nRF24L01的遥控小车,包含源代码,基本框架包括小车上下左右,小车利用左右轮组差速进行转弯,完成各种路线行驶,适合电子爱好者新手练手的小车平台,可从源工程拓展小车功能。
0.png
(37.92 KB, 下载次数: 119)
下载附件
2017-9-28 00:14 上传
单片机源程序如下:
#include "nRF24L01.h"
uchar TX_ADDRESS[TX_ADR_WIDTH]={0xAB,0xAA,0xAA,0xAA,0xAA}; //发送地址
uchar RX_ADDRESS[RX_ADR_WIDTH]={0xAB,0xAA,0xAA,0xAA,0xAA}; //接收地址
uchar rate = 0x0F; //2Mbs, 0dB 低噪声增益开启
sbit LED1 =P1^1; // 前进的按键接口 根据自己焊接决定
//sbit LED2 =P2^1;
//sbit LED3 =P2^2;
//sbit LED4 =P2^3;
//sbit LED5 =P2^4;
sbit L1=P2^6;
sbit L2=P2^7;
sbit R1=P2^4;
sbit R2=P2^5;
//sbit fire=P2^7;
uchar rece_buf[32]; //接收寄存器
//a0=37:最大角度,脉宽1.899ms
void delay(uint t)
{
uint a,b;
for(a=0;a<t;a++)
for (b=0;b<255;b++);
}
void main()
{ int i;
uchar n=0,m=0;
LED1=1;
// LED2=1;
// P2=0xff;
//delay(1000) ;
// fire=0;
while(NRF24L01_Check()); //等待检测到NRF24L01,程序才会向下执行
NRF24L01_RT_Init(TX_PLOAD_WIDTH,TX_ADDRESS,TX_ADR_WIDTH,RX_ADDRESS,RX_ADR_WIDTH,rate);
for(i=0;i<12;i++)
{
delay(100);
LED1=~LED1;
}
LED1=1;
// fire=1;
while(1)
{
// **************************************
//**************************************************
if(NRF_IRQ==0) // 如果无线模块接收到数据
{
if(NRF24L01_RxPacket(rece_buf)==0)
{
if(rece_buf[1]==0xaa) //第1位以后是收到的命令数据,rece_buf[0]是数据位数长度
{
LED1=0;
// LED2=1;
// LED3=0;
// LED4=1;
// LED5=0;
L1 =1;
L2 =0;
R1 =1;
R2 =0;
}
else if(rece_buf[1]==0xab) //第1位以后是收到的命令数据,rece_buf[0]是数据位数长度
{
LED1=0;
// LED2=0;
// LED3=1;
// LED4=0;
// LED5=1;
L1 =0;
L2 =1;
R1 =0;
R2 =1;
}
else if(rece_buf[1]==0xac) //第1位以后是收到的命令数据,rece_buf[0]是数据位数长度
{
LED1=0;
// LED2=1;
// LED3=0;
// LED4=0;
// LED5=1;
L1 =1;
L2 =0;
R1 =0;
R2 =1;
}
else if(rece_buf[1]==0xad) //第1位以后是收到的命令数据,rece_buf[0]是数据位数长度
{
LED1=0;
// LED2=0;
// LED3=1;
// LED4=1;
// LED5=0;
// L1 =0;
L2 =1;
R1 =1;
R2 =0;
}
else if(rece_buf[1]==0xae) //第1位以后是收到的命令数据,rece_buf[0]是数据位数长度
{
LED1=0;
// LED2=0;
}
else if(rece_buf[1]==0xaf) //第1位以后是收到的命令数据,rece_buf[0]是数据位数长度
{
LED1=0;
// fire=0;
// LED2=0;
}
else
{
LED1=0;
// LED2=1;
// LED3=1;
// LED4=1;
// LED5=1;
L1 =0;
L2 =0;
R1 =0;
R2 =0;
// fire=1;
}
delay(20);
}
}
else
{
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
51版遥控小车.zip
(140.68 KB, 下载次数: 162)
2017-9-27 19:08 上传
点击文件名下载附件
源代码
下载积分: 黑币 -5
作者:
腾飞的龙
时间:
2017-11-5 13:37
楼主:是用按键控制的吗?
作者:
STC2
时间:
2022-11-18 19:36
电路图有吗,俺不懂
作者:
sheng1921
时间:
2023-1-3 23:02
请问这个是适用天线版本的吗?
作者:
fosu顽童
时间:
2024-3-25 16:25
判断/检查数组里面的多个元素是否等于目标值和只检查数组的一个元素,这两种方法的效果会一样吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1