找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7123|回復: 4
打印 上一主題 下一主題
收起左側

基于nRF24L01的2.4G遙控車51單片機源程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:236141 發(fā)表于 2017-9-27 19:09 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
基于nRF24L01的遙控小車,包含源代碼,基本框架包括小車上下左右,小車利用左右輪組差速進行轉彎,完成各種路線行駛,適合電子愛好者新手練手的小車平臺,可從源工程拓展小車功能。


單片機源程序如下:

  1. #include "nRF24L01.h"
  2.        
  3. uchar TX_ADDRESS[TX_ADR_WIDTH]={0xAB,0xAA,0xAA,0xAA,0xAA}; //發(fā)送地址
  4. uchar RX_ADDRESS[RX_ADR_WIDTH]={0xAB,0xAA,0xAA,0xAA,0xAA}; //接收地址

  5. uchar   rate = 0x0F;    //2Mbs, 0dB  低噪聲增益開啟


  6. sbit    LED1      =P1^1;                                //          前進的按鍵接口  根據(jù)自己焊接決定
  7. //sbit    LED2      =P2^1;                               
  8. //sbit        LED3          =P2^2;                               
  9. //sbit        LED4          =P2^3;
  10. //sbit        LED5          =P2^4;                                                          
  11. sbit L1=P2^6;
  12. sbit L2=P2^7;
  13. sbit R1=P2^4;
  14. sbit R2=P2^5;
  15. //sbit fire=P2^7;       
  16. uchar rece_buf[32];                                                        //接收寄存器
  17.                                                         //a0=37:最大角度,脈寬1.899ms

  18. void delay(uint t)
  19. {
  20.         uint a,b;
  21.         for(a=0;a<t;a++)
  22.                 for (b=0;b<255;b++);
  23. }

  24. void main()
  25. {        int i;
  26.         uchar n=0,m=0;
  27.         LED1=1;
  28. //        LED2=1;
  29. //        P2=0xff;
  30. //delay(1000) ;
  31. //    fire=0;
  32.         while(NRF24L01_Check());                    //等待檢測到NRF24L01,程序才會向下執(zhí)行
  33.         NRF24L01_RT_Init(TX_PLOAD_WIDTH,TX_ADDRESS,TX_ADR_WIDTH,RX_ADDRESS,RX_ADR_WIDTH,rate);                       

  34.         for(i=0;i<12;i++)
  35.                 {
  36.                         delay(100);       
  37.                         LED1=~LED1;
  38.                 }
  39.         LED1=1;
  40. //        fire=1;
  41.                                

  42.         while(1)
  43.         {
  44. //        **************************************


  45. //**************************************************
  46.                 if(NRF_IRQ==0)                 // 如果無線模塊接收到數(shù)據(jù)
  47.                 {               
  48.                        
  49.                         if(NRF24L01_RxPacket(rece_buf)==0)
  50.                         {       
  51.                                 if(rece_buf[1]==0xaa)                           //第1位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長度
  52.                                 {
  53.                                         LED1=0;
  54. //                                        LED2=1;
  55. //                                        LED3=0;
  56. //                                        LED4=1;
  57. //                                        LED5=0;
  58.                                         L1        =1;
  59.                                         L2        =0;
  60.                                         R1        =1;
  61.                                         R2        =0;
  62.                                 }
  63.                                 else if(rece_buf[1]==0xab)                         //第1位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長度
  64.                                 {
  65.                                         LED1=0;
  66. //                                        LED2=0;
  67. //                                        LED3=1;
  68. //                                        LED4=0;
  69. //                                        LED5=1;
  70.                                         L1        =0;
  71.                                         L2        =1;
  72.                                         R1        =0;
  73.                                         R2        =1;
  74.                                 }
  75.                                 else if(rece_buf[1]==0xac)                         //第1位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長度
  76.                                 {
  77.                                         LED1=0;
  78. //                                        LED2=1;
  79. //                                        LED3=0;
  80. //                                        LED4=0;
  81. //                                        LED5=1;
  82.                                         L1        =1;
  83.                                         L2        =0;
  84.                                         R1        =0;
  85.                                         R2        =1;
  86.                                 }       
  87.                                 else if(rece_buf[1]==0xad)                         //第1位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長度
  88.                                 {
  89.                                         LED1=0;
  90. //                                        LED2=0;
  91. //                                        LED3=1;
  92. //                                        LED4=1;
  93. //                                        LED5=0;
  94. //                                        L1        =0;
  95.                                         L2        =1;
  96.                                         R1        =1;
  97.                                         R2        =0;
  98.                                 }
  99.                                
  100.                                 else if(rece_buf[1]==0xae)                           //第1位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長度
  101.                                 {
  102.                                         LED1=0;
  103.                                        
  104. //                                        LED2=0;
  105.                                 }
  106.                                 else if(rece_buf[1]==0xaf)                         //第1位以后是收到的命令數(shù)據(jù),rece_buf[0]是數(shù)據(jù)位數(shù)長度
  107.                                 {
  108.                                         LED1=0;
  109. //                                        fire=0;
  110. //                                        LED2=0;
  111.                                 }
  112.                                 else
  113.                                 {
  114.                                         LED1=0;
  115. //                                        LED2=1;
  116. //                                        LED3=1;
  117. //                                        LED4=1;
  118. //                                        LED5=1;
  119.                                         L1        =0;
  120.                                         L2        =0;
  121.                                         R1        =0;
  122.                                         R2        =0;
  123. //                                        fire=1;
  124.                                 }
  125.                                 delay(20);
  126.                         }
  127.                 }
  128.                 else        
  129.                 {
  130. ……………………

  131. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
51版遙控小車.zip (140.68 KB, 下載次數(shù): 162)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏8 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:79544 發(fā)表于 2017-11-5 13:37 | 只看該作者
樓主:是用按鍵控制的嗎?
回復

使用道具 舉報

板凳
ID:718064 發(fā)表于 2022-11-18 19:36 | 只看該作者
電路圖有嗎,俺不懂
回復

使用道具 舉報

地板
ID:1060234 發(fā)表于 2023-1-3 23:02 | 只看該作者
請問這個是適用天線版本的嗎?
回復

使用道具 舉報

5#
ID:402383 發(fā)表于 2024-3-25 16:25 | 只看該作者
判斷/檢查數(shù)組里面的多個元素是否等于目標值和只檢查數(shù)組的一個元素,這兩種方法的效果會一樣嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表