求助:nRF24L01 与Arduino链接结果引脚做错了能在程序里修改吗
求助:nRF24L01 与Arduino链接结果引脚做错了能在程序里修改吗pcb已经做好了
/* nRF24L01接线方式:
* MISO -> 12
* MOSI -> 11
* SCK-> 13
* CE -> 8
* CSN-> 7
但是做成了
D8——CE
D9——CSN
D10——SCK
D11——MO
D12——MI
求程序修改方法!!!!!!!!!!!!
程序是这个
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
int value;
String inString = ""; //内部用变量
int codo;//提取指令数字
int datadow;//提取数据
int shuxx;//输出用变量
int rfadd;//无线模块地址选择
void setup()
{
Serial.begin(9600);
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *) "99999"); //设置自己的地址(发送端地址),使用5个字符
Mirf.payload = sizeof(value);
Mirf.channel = 90; //设置所用信道
Mirf.config();
Mirf.setTADDR((byte *)"00001"); //设置默认接收端地址
Serial.println("ok");
}
//-----------注循环程序--------------
void loop(){
int i;//循环变量
//读串口
str_int();
if (shuxx> 0)//判断串口是否有数据
{
value=shuxx;//str_int();串口传出数值
codo=value/1000;//提取指令数字
datadow=value%1000;//提取数据
codopor();//处理命令子程序
//Serial.println(value);
Mirf.send((byte *)&value); //发送指令,发送随机数value
while(Mirf.isSending()) delay(1); //直到发送成功,退出循环
for(i=0;i<=10;i++)//循环读取10次
{
if(Mirf.dataReady()) //反馈数据
{//当接收到程序,便从串口输出接收到的数据
Mirf.getData((byte *) &value);
i=20;//退出循环
Serial.print("up--");
Serial.println(value);
}
delay(100) ;
}
if(i!=21){
Serial.println("EEER!!!!!!!!!!");
//超时错误
}
shuxx=-1;
}
//------------监听部分-------
mon_dow();
}
//-------串口数字转数值输出子程序----
void str_int()
{
while (Serial.available() > 0) {
int inChar = Serial.read();
if (isDigit(inChar)) {//isDigit()判断是否是数字
inString += (char)inChar;
}
if (inChar == '\n') {
shuxx=inString.toInt();//输出shuxx数值int
// Serial.print("Value:");
//Serial.println(inString.toInt());
//Serial.print("String: ");
//Serial.println(inString);
// Serial.print("------ ");
//Serial.println(shuxx);
inString = "";
}
}
}
//---------------指令子程序-----
void codopor()
{
if(codo==20) {
address();
// Serial.print("datadow---");
//Serial.println(datadow);
}
}
//----------无线模块主机地址选择子程序----------
void address()
{
switch(datadow) {
case 1:
Mirf.setTADDR((byte *)"00001"); //设置接收端地址
Serial.print("13");
break;
case 2:
Mirf.setTADDR((byte *)"00002"); //设置接收端地址
Serial.print("13");
break;
case 3:
Mirf.setTADDR((byte *)"00003"); //设置接收端地址
Serial.print("13");
break;
case 4:
Mirf.setTADDR((byte *)"00004"); //设置接收端地址
Serial.print("13");
break;
case 5:
Mirf.setTADDR((byte *)"00005"); //设置接收端地址
Serial.print("13");
break;
case 6:
Mirf.setTADDR((byte *)"00006"); //设置接收端地址
Serial.print("13");
break;
case 7:
Mirf.setTADDR((byte *)"00007"); //设置接收端地址
Serial.print("13");
break;
case 8:
Mirf.setTADDR((byte *)"00008"); //设置接收端地址
Serial.print("13");
break;
case 9:
Mirf.setTADDR((byte *)"00009"); //设置接收端地址
Serial.print("13");
break;
case 10:
Mirf.setTADDR((byte *)"00010"); //设置接收端地址
Serial.print("13");
break;
}
}
//------------监听部分子程序-------
void mon_dow()
{
if(Mirf.dataReady()) {//当接收到程序,便从串口输出接收到的数据
Mirf.getData((byte *) &value);
codo=value/1000;//提取指令数字
datadow=value%1000;//提取数据
codopor();//处理命令子程序
}
}
在NRF24L01的库文件里面改,除啦电源不可以修改之外其他的引脚可以随便配置,亲测的哈。 ce csn 可以,别的三个不行吧 我改了但是不好用
看我改的对么。但是没有效果。 应该是修改不了的,mi mo 的口是arduino默认的 我不是要改mimo 我只是改其他的
好像也改不了
页:
[1]