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();//清空串口緩存
}