极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13702|回复: 1

通过串口发送字母给nrf2401来控制另一个arduino上的led,编译上传成功但是测试没有...

[复制链接]
发表于 2018-4-29 20:25:33 | 显示全部楼层 |阅读模式
转自大师bigapplesama 的        https://www.arduino.cn/thread-45414-1-1.html

下面的程序上传通过了可是测试时发射端的灯能亮,接收端的灯不亮,哪位大师知道是什么原因吗?


arduino nano与无线模块的连接是8-CSN,7-CE,13-SCK,11-MOSI,12-MISO
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8); // CNS, CE
const byte addresses[][6] = {"00001", "00002"};
String indate="";
String val="";
int led=3;
&#160;
void setup() {
&#160;&#160;&#160;
&#160;&#160;Serial.begin(9600);
&#160;&#160;pinMode(led,OUTPUT);
&#160;&#160;radio.begin();
&#160;&#160;radio.openWritingPipe(addresses[0]); // 00002
&#160;&#160;radio.openReadingPipe(1, addresses[1]); // 00001
&#160;&#160;radio.setPALevel(RF24_PA_MIN);
&#160;&#160;&#160;
}
&#160;
void loop() {
&#160;&#160;delay(5);
&#160;&#160;&#160;&#160;radio.stopListening();
&#160;&#160;&#160;&#160;while(Serial.available()>0)
&#160;&#160;{
&#160;&#160;&#160;&#160;indate+=char(Serial.read());
&#160;&#160;&#160;&#160;delay(2);
&#160;&#160;&#160;&#160;if(Serial.available()<=0)
&#160;&#160;&#160;&#160;&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Serial.println(indate);
&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;}
&#160;&#160;if(indate.length()>0)
&#160;&#160;{
&#160;&#160;&#160;&#160;&#160;val=indate;&#160;
&#160;&#160;&#160;&#160;&#160;if(val=="b")&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;digitalWrite(led,HIGH);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const char text1[] = "b";
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;radio.write(&text1, sizeof(text1));&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;else if(val=="a")
&#160;&#160;&#160;&#160;&#160;&#160;{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;digitalWrite(led,LOW);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;const char text2[] = "a";
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;radio.write(&text2, sizeof(text2));
&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;
&#160;&#160;}&#160;
&#160;&#160;&#160;&#160;indate="";&#160;&#160; //清空indate为下一次输入做准备
}


这边是接收端的代码,读取收到的文本,是b就打开led,是a则关闭led,之前有写了个把读取的文字发送到串口的然后发现串口里
arduino uno的连接是CE <–> Arduino pin 9
CSN <–> Arduino pin 10
SCK <–> Arduino pin 13
MOSI <–> Arduino pin 11
MISO <–> Arduino pin 12
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define led 5

RF24 radio(7, 8); // CNS, CE
const byte addresses[][6] = {"00001", "00002"};
void setup()
  pinMode(5, OUTPUT);
  radio.begin();
  radio.openWritingPipe(addresses[1]); // 00001
  radio.openReadingPipe(1, addresses[0]); // 00002
  radio.setPALevel(RF24_PA_MIN);
}
void loop() {
  radio.startListening();
  if (radio.available()) {
    char text[32] = "";
    radio.read(&text, sizeof(text));
     
  if (text == "a") {
    digitalWrite(led, HIGH);

  }
  if (text == "b") {
    digitalWrite(led, LOW);

  }
}}
回复

使用道具 举报

发表于 2018-4-30 23:27:28 | 显示全部楼层
名字看成了huyanbin
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-27 12:19 , Processed in 0.041096 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表