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

   日期:2020-12-14     浏览:118    评论:0    
核心提示:Arduino+nRF24L01多按键远程无线控制(接收端)可以去掉相关的String库和定义参数,本文没有采用。接收按键1的的代码为51和24,分别对应的发射端的发送数据是123和456,定义的数据类型为byte。不知道为什么会这样?如果定义的发送数据类型为char类型的话,就没有问题,但是如果是char数据类型,能接收到一致的数据,并从串口打印出来,但是不知道为什么程序写的判断代码就是判断不了接收到的数据的一致性。通过串口看打印出来的收到的数据又是一致的。不知道是数据类型问题还是数据格式不对,没有

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();//清空串口缓存
  }
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服