|
基于nRF24L01的遙控小車(chē),包含源代碼,基本框架包括小車(chē)上下左右,小車(chē)?yán)米笥逸喗M差速進(jìn)行轉(zhuǎn)彎,完成各種路線行駛,適合電子愛(ài)好者新手練手的小車(chē)平臺(tái),可從源工程拓展小車(chē)功能。
單片機(jī)源程序如下:
- #include "nRF24L01.h"
-
- uchar TX_ADDRESS[TX_ADR_WIDTH]={0xAB,0xAA,0xAA,0xAA,0xAA}; //發(fā)送地址
- uchar RX_ADDRESS[RX_ADR_WIDTH]={0xAB,0xAA,0xAA,0xAA,0xAA}; //接收地址
- uchar rate = 0x0F; //2Mbs, 0dB 低噪聲增益開(kāi)啟
- sbit LED1 =P1^1; // 前進(jìn)的按鍵接口 根據(jù)自己焊接決定
- //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()); //等待檢測(cè)到NRF24L01,程序才會(huì)向下執(zhí)行
- 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) // 如果無(wú)線模塊接收到數(shù)據(jù)
- {
-
- if(NRF24L01_RxPacket(rece_buf)==0)
- {
- if(rece_buf[1]==0xaa) //第1位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長(zhǎng)度
- {
- 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位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長(zhǎng)度
- {
- 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位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長(zhǎng)度
- {
- 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位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長(zhǎng)度
- {
- 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位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長(zhǎng)度
- {
- LED1=0;
-
- // LED2=0;
- }
- else if(rece_buf[1]==0xaf) //第1位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長(zhǎng)度
- {
- 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
- {
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
51版遙控小車(chē).zip
(140.68 KB, 下載次數(shù): 162)
2017-9-27 19:08 上傳
點(diǎn)擊文件名下載附件
源代碼
|
|