Arduino+nRF24L01多按键远程无线控制(接收端)
可以去掉相关的String库和定义参数,本文没有采用。
接收按键1的的代码为51和24,分别对应的发射端的发送数据是123和456,跟换发送数据,对应的接收数值也会变化,这点注意!!定义的数据类型为byte。不知道为什么会这样?
如果定义的发送数据类型为char类型的话,就没有问题,但是如果是char数据类型,能接收到一致的数据,并从串口打印出来,但是不知道为什么程序写的判断代码就是判断不了接收到的数据的一致性。通过串口看打印出来的收到的数据又是一致的。不知道是数据类型问题还是数据格式不对,没有搞懂这个问题。有知道的小伙伴,可以告诉一下我。
代码区:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <String.h>
#define LedPin 4 //LED灯
#define LedPin2 5 //LED灯
RF24 radio(7, 8);
const byte address[6] = "00001";
String comdata = "";
byte text;
void setup()
{
while (!Serial);
pinMode(LedPin, OUTPUT);//设置7号引脚为输出引脚
digitalWrite(LedPin, LOW);
pinMode(LedPin2, OUTPUT);//设置7号引脚为输出引脚
digitalWrite(LedPin2, LOW);
Serial.begin(9600);
radio.begin();
//radio.setCRCLength(RF24_CRC_16);
// 设置crc校验长度
// 两种 8位RF24_CRC_8 和 16位RF24_CRC_16
radio.openReadingPipe(0, address); // 打开对方的通道用来读消息
radio.startListening();// 开始监听
//radio.printDetails(); // 打印配置信息,开启后无法串口打印
radio.setChannel(114); // 设置信道(0-127),114号通道
radio.setPALevel(RF24_PA_HIGH);
// 设置功放级别,有四种级别:
// RF24_PA_MIN=-18dBm
// RF24_PA_LOW=-12dBm
// RF24_PA_MED=-6dBM
// RF24_PA_HIGH=0dBm
// radio.enableDynamicPayloads(); // 开启动态有效信息长度
// 设置重传次数以及每次重传的延迟
//radio.setRetries(15,15);
radio.setDataRate(RF24_1MBPS); // 设置传输速率接收端设置RF24_250KBPS不能收到数据
}
void loop()
{
delay(250);
if (radio.available()) // 是否有有效数据可以读取
{
if (radio.available() > 0)
{
radio.read(&text, sizeof(text));
comdata == text ;
delay(250);
Serial.println(text);
if (text == 51) {
digitalWrite(LedPin, HIGH);
Serial.println(text);
delay(1000);
}
else if (text == 24) {
digitalWrite(LedPin2, HIGH);
Serial.println(text);
delay(1000);
}
}
digitalWrite(LedPin, LOW);
digitalWrite(LedPin2, LOW);
Serial.println("没有信号");
delay(50);
//return;
}
while (Serial.available() > 0)
Serial.read();//清空串口缓存
}