Arduino+nRF24L01多按键远程无线控制(接收端)(二)
日期: 2020-12-13 分类: 跨站数据测试 624次阅读
**
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
精华推荐