基于nRF24L01的遥控小车,包含源代码,基本框架包括小车上下左右,小车利用左右轮组差速进行转弯,完成各种路线行驶,适合电子爱好者新手练手的小车平台,可从源工程拓展小车功能。
单片机源程序如下:
- #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)
|