nRF24L01 无线模块 测试 按键-灯-远程控制
扫描二维码
随时随地手机看文章
哈哈,穷吊死一个,自己做的一个超简单的板还没有电源提供,只得借助我的大开发板啦。其实这2个模块是完全可以分开的,无线嘛,你懂得!进入正题,这个实验的功能就是一个发送模块(大的那个板)连接4个按键,通过按动这4个不同的按键来发送4种不同的命令,来控制接收端(小的板)点亮4个不同的灯。
>_
1 void main()
2 {
3 uchar Tx_Buf1[]={1}; //发送的信息1
4 uchar Rx_Buf[32]; //接收到的数据暂存器,最多32字节数据
5 init_NRF24L01();
6 LED6=1; //初始灯6熄灭
7
8 while(NRF24L01_Check()) //检查不到24l01则报警
9 {
10 beep=0;
11 delay_ms(200);
12 beep=1;
13 delay_ms(200);
14 }
15 while(1)
16 {
17 RX_Mode(); //接收模式
18 while(!nRF24L01_RxPacket(Rx_Buf)) //等待接收数据,返回1则接收到数据,在等待接收数据期间,可以随时变成发送模式
19 {
20 if(KEY1==0) //按了按键1,则变成发送模式,发送对应数据,发送完后变成接收模式
21 {
22 delay_ms(5);//消抖动
23 if(KEY1==0)
24 {
25 while(!KEY1);
26 TX_Mode(); //发送模式
27 Tx_Buf1[0]=1; //将1发送过去
28 nRF24L01_TxPacket(Tx_Buf1); //发送命令数据
29 LED6=0;
30 delay_ms(300);
31 LED6=1;
32 delay_ms(300); //发送后LED1闪一下
33 break; //退出最近的循环,从而变回接收模式,这句关键
34 }
35 }
36 else if(KEY2==0)
37 {
38 delay_ms(5);//消抖动
39 if(KEY2==0)
40 {
41 while(!KEY2);
42 TX_Mode(); //发送模式
43 Tx_Buf1[0]=2; //将2发送过去
44 nRF24L01_TxPacket(Tx_Buf1); //发送命令数据
45 LED6=0;
46 delay_ms(300);
47 LED6=1;
48 delay_ms(300);
49 break; //退出最近的循环,从而变回接收模式,这句关键
50 }
51 }
52 else if(KEY3==0)
53 {
54 delay_ms(5);//消抖动
55 if(KEY3==0)
56 {
57 while(!KEY3);
58 TX_Mode(); //发送模式
59 Tx_Buf1[0]=3; //将3发送过去
60 nRF24L01_TxPacket(Tx_Buf1); //发送命令数据
61 LED6=0;
62 delay_ms(300);
63 LED6=1;
64 delay_ms(300);
65 break; //退出最近的循环,从而变回接收模式,这句关键
66 }
67 }
68 else if(KEY4==0) //按了按键8,则变成发送模式,发送对应数据,发送完后变成接收模式
69 {
70 delay_ms(5);//消抖动
71 if(KEY4==0)
72 {
73 while(!KEY4);
74 TX_Mode(); //发送模式
75 Tx_Buf1[0]=4; //将4发送过去
76 nRF24L01_TxPacket(Tx_Buf1); //发送命令数据
77 LED6=0;
78 delay_ms(300);
79 LED6=1;
80 delay_ms(300);
81 break; //退出最近的循环,从而变回接收模式,这句关键
82 }
83 }
84 }
85 if(Rx_Buf[0]==1) //若接收到对应的数据则实现对应功能
86 {
87 Rx_Buf[0]=0; //清空数据
88 LED6=0;
89 delay_ms(300);
90 LED6=1;
91 delay_ms(300); //接收到数据 后闪烁
92 }
93 }
94 }
第8~14行检测nRF24L01是否存在,