Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

Arduino+nRF24L01多按键远程无线控制(发射端)

Arduino+nRF24L01多按键远程无线控制(发射端)

采用的是arduino nano
注意ce和csn引脚,在使用nano开发板时,接7和8引脚。
本文只添加了2个按钮控制发射端2路io口信号的触发,想要增加按键只需依次添加即可,添加的按钮控制越多,对于程序运行速度会有所影响,程序采用的是枚举扫描方式来检测按键是否按下。
发射端代码:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

#define buttonPin 4 //发射器触发数据1引脚-按钮
#define buttonPin2 5 //发射器触发数据2引脚-按钮

int buttonstate = 0;//按键1的初始值
int buttonstate2 = 0;//按键2的初始值

int buttonPushCounter = 0;//按键1的防抖累计初始值。
int buttonPushCounter2 = 0;

int lastButtonState = 0;
int lastButtonState2 = 0;

//create an RF24 object
RF24 radio(7, 8);  // CE, CSN
const byte address[6] = "00001";
void setup()
{
  pinMode(buttonPin, INPUT);//设置4号引脚为输入引脚
  pinMode(buttonPin, LOW);

  pinMode(buttonPin2, INPUT);//设置5号引脚为输入引脚
  pinMode(buttonPin2, LOW);

  Serial.begin(9600);
  
  radio.begin();
  //radio.setCRCLength(RF24_CRC_16);//此项接收端不能开启,否则无法接收到数据。
  // 设置crc校验长度
  // 两种 8位RF24_CRC_8 和 16位RF24_CRC_16
  radio.setChannel(114);   // 设置信道(0-127),114号通道
  //radio.setDataRate(RF24_250KBPS); // 设置传输速率
  radio.setPALevel(RF24_PA_HIGH); // 设置功放级别,有四种级别:
  // RF24_PA_MIN=-18dBm
  // RF24_PA_LOW=-12dBm
  // RF24_PA_MED=-6dBM
  // RF24_PA_HIGH=0dBm

  radio.openWritingPipe(address);
  radio.stopListening();
}
void loop()
{
  buttonstate = digitalRead(buttonPin);
  buttonstate2 = digitalRead(buttonPin2);

  if (buttonstate != lastButtonState)
  {
      if (buttonstate == HIGH)
    {
      buttonPushCounter++;//按键检测
      if (buttonPushCounter % 4 == 0) //如果循环累计4次都检测按键就为真。
      {
      const byte text= "123";
      radio.write(&text, sizeof(text));
      delay(600);
      Serial.println(text);
       }
    }
  }
  else {
    Serial.println("4号引脚未触发");
    delay(500);
  }
//**************************2号按键**********************************//
 if (buttonstate2 != lastButtonState2)
  {
       if (buttonstate2 == HIGH)
    {
       buttonPushCounter2++;
         if (buttonPushCounter2 % 4 == 0) 
      {    
      const byte text2= "456";
      radio.write(&text2, sizeof(text2));
      delay(600);
      Serial.println(text2);
    }
  }
   }
  else {
    Serial.println("5号引脚未触发");
    delay(500);
  }
  while (Serial.read() >= 0) {} //清空串口缓存
}

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: windows安装golang&sublime text 3 配置golang开发环境

下一篇: centos7部署kubernetes详细部署步骤

精华推荐