mak4000 发表于 2018-1-21 22:16:10

求助: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();//处理命令子程序

}
}

PINKWALKMAN 发表于 2018-1-22 08:14:36

在NRF24L01的库文件里面改,除啦电源不可以修改之外其他的引脚可以随便配置,亲测的哈。

275891381 发表于 2018-1-22 09:49:07

ce csn 可以,别的三个不行吧

mak4000 发表于 2018-1-22 21:55:46

我改了但是不好用

mak4000 发表于 2018-1-22 21:57:33

看我改的对么。但是没有效果。

mmmao 发表于 2018-1-24 08:51:23

应该是修改不了的,mi mo 的口是arduino默认的

mak4000 发表于 2018-1-24 17:51:18

我不是要改mimo 我只是改其他的
好像也改不了
页: [1]
查看完整版本: 求助:nRF24L01 与Arduino链接结果引脚做错了能在程序里修改吗