Arduino+nRF24L01多按键远程无线控制(发射端)
日期: 2020-12-13 分类: 跨站数据测试 534次阅读
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
精华推荐