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();//清空串口快取
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/234319.html
標籤:其他
