Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

Arduino+nRF24L01多按键远程无线控制(接收端)(二)

**

Arduino+nRF24L01多按键远程无线控制(接收端)(二)

**
本次选用的库是采用:Mirf库
开发板用的还是arduino nano
本程序移植前面的RF24库的程序。使用Mirf库,发现接收和发送数据不会改变,发送端发什么接收到的就是什么,本文只验证了int类型数据类型的接收和发送。
实现的功能:发送端按下按键4或者5,io口上的按键,就通过nrf24l01发送对应的int类型(111和222,这个自行设置0-255任意)数据给接收端,接收端收到什么数据就做判断,如果接收到111,就执行对应的4号io口动作。
同理:理论上可以并入很多按键来实现远程控制更多的接收端单片机上的io设备,不过接入的按键越多,程序运行执行的判断会增加,从而导致程序响应时间会延长。
注意事项:一定要在发送端各个按键的控制的io口接一个10K的下拉电阻,防止误发送数据。为了消除干扰:建议在nrf24l01的电源正负之间加一个2.2μf的电容。
在这里插入图片描述

//接收端程序
 
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>



#define LedPin 4 //LED灯
#define LedPin2 5 //LED灯
int value ;

void setup()
{
  while (!Serial);
  pinMode(LedPin, OUTPUT);//设置4号引脚为输出引脚
  digitalWrite(LedPin, LOW);

  pinMode(LedPin2, OUTPUT);//设置5号引脚为输出引脚
  digitalWrite(LedPin2, LOW);
  
  Serial.begin(9600);
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.cePin = 7;
  Mirf.csnPin = 8; //在这里自定义CE和CSN引脚
  Mirf.setRADDR((byte *)"00005"); //设置自己的地址(接收端地址),使用5个字符
  Mirf.payload = sizeof(value);   
  Mirf.channel = 90;   //设置使用的信道
  Mirf.config(); 
  Serial.println("Listening...");  //开始监听接收到的数据
}
 
void loop()
{
  delay(250);
  if(Mirf.dataReady()) //当接收到程序,便从串口输出接收到的数据
  {  
    if(Mirf.dataReady() > 0) 
    {
    Mirf.getData((byte *) &value);
     delay(250);
      Serial.println(value);
      if(value == 111){
        digitalWrite(LedPin, HIGH);
         Serial.println(value);
        delay(1000);
      }
     else if (value == 222) {
        digitalWrite(LedPin2, HIGH);
         Serial.println(value);
        delay(1000);
      }
   }
   digitalWrite(LedPin, LOW);
    digitalWrite(LedPin2, LOW);
      Serial.println("没有信号");
      delay(50);
   //return;
  }
 while (Serial.available() > 0)
  Serial.read();//清空串口缓存
  }

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: pip环境变量的配置

下一篇: 大厂知识点了解中心,掌握了这些技术你还怕拿不到高薪吗?(P8架构体系)

精华推荐