找回密码
 立即注册

QQ登录

只需一步,快速开始

本帖最后由 lxf 于 2020-8-17 13:18 编辑

第43课 NRF24L01 2.4G无线模块
之按钮点亮LED灯


目标

利用NRF24L01 2.4G无线模块,按钮远程控制点亮LED灯

实验材料

Arduino UNO开发板*2
NRF24L01 2.4G无线模块*2
LED发光模块
按钮开关模块
配套USB数据线*2
配套杜邦线若干
Arduino IDE软件

图片1.png

内容

利用NRF24L01 2.4G无线模块,在一块Arduino UNO主板上按下按钮,另一块Arduino UNO主板上的LED灯被点亮5秒,5秒后再次熄灭。

接线图

图片2.png

接线方式

Arduino UNO1    <------>     NRF24L01 2.4G无线模块1
           3.3V          <------>                  VCC
          GND          <------>                  GND
            8              <------>                  CSN
            7              <------>                   CE  
          13              <------>                  SCK
          11              <------>                 MOSI
          12              <------>                 MISO
Arduino UNO2   <------>     NRF24L01 2.4G无线模块2
           3.3V        <------>                   VCC
           GND       <------>                  GND
           8             <------>                  CSN
           7             <------>                  CE  
         13             <------>                  SCK
         11             <------>                 MOSI
        12              <------>                 MISO
Arduino UNO2    <------>       按钮开关模块
         5V               <------>               VCC
      GND              <------>               GND
        2                  <------>               OUT
Arduino UNO1  <------>        LED发光模块
       5V              <------>                 VCC
     GND             <------>               GND
       4                 <------>                 IN

程序实现代码

发送端程序 Sender.ino

  1. #include <SPI.h>
  2. #include <nRF24L01.h>
  3. #include <RF24.h>   //NRF24L01 2.4G无线模块的库文件
  4. RF24 radio(7, 8);   //创建一个RF24的对象CE=7, CSN=8
  5. const byte address[6] = "00001";  //创建一个数组,建立发送机地址,或者说两个模块将用于通信的“管道”
  6. void setup() {
  7.     pinMode(2, INPUT);   //初始化2号引脚为输入
  8.   radio.begin();    //初始化radio对象
  9.   radio.openWritingPipe(address);  //使用radio.openWritingPipe()函数设置的发送机地址
  10.   radio.setPALevel(RF24_PA_MIN);  //设置功率放大器级别,将其设置为最小值
  11.   radio.stopListening();  // 使用radio.stopListening()函数将模块设置为发送机
  12. }
  13. void loop() {
  14.   if (digitalRead(2) == 1){    //如果2号引脚为高电平,即按钮被按下
  15.   const char text=  'a';  //创建一个字符数组,并为其分配消息a
  16.   radio.write(&text, sizeof(text)); //使用radio.write()函数将消息发送给接收机,text是要发送的字符变量,
  17. // sizeof(text))设置了我们要从text变量中获取的字节数
  18.   delay(1000);  //延迟等待1秒
  19. }
  20. }
复制代码

接收端程序 Receiver.ino

  1. #include <SPI.h>
  2. #include <nRF24L01.h>
  3. #include <RF24.h>   //NRF24L01 2.4G无线模块的库文件
  4. RF24 radio(7, 8);   //创建一个RF24的对象CE=7, CSN=8
  5. const byte address[6] = "00001";  //创建一个数组,建立接收机地址,或者说两个模块将用于通信的“管道”
  6. void setup() {
  7.   pinMode(4, OUTPUT);   //初始化4号引脚为输出
  8.   Serial.begin(9600);
  9.   radio.begin();   //初始化radio对象
  10.   radio.openReadingPipe(0, address);   //使用radio.openReadingPipe()函数设置的接收机地址
  11.   radio.setPALevel(RF24_PA_MIN);   //设置功率放大器级别,将其设置为最小值
  12.   radio.startListening();    // 使用radio..startListening()将模块设置为接收机
  13. }
  14. void loop() {
  15.   if (radio.available()) {  //判断是否有要接收的数据
  16.     char text = 0;      //创建一个空的字符变量text
  17.     radio.read(&text, sizeof(text));  //读取数据,并将其存储到text变量中
  18.     Serial.println(text);  //打印变量text的数据,即接收到的数据
  19.     delay(1000);  //延迟等待1秒
  20.     if (text == 'a') {   //如果接收到的数据是a,那么LED被点亮5秒,5秒后熄灭
  21.     digitalWrite(4,HIGH);
  22.       delay(5000);
  23.   digitalWrite(4,LOW);
  24.   } else {
  25.     digitalWrite(4,LOW);
  26.   }
  27.   }
  28. }
复制代码
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册