本帖最后由 saigon 于 2022-9-9 11:41 编辑
本人想用串口屏和NANO做主机用NRF24下建立两个从机。让从机控制电机等设备。
现在我硬件弄好了。发现单独运行串口屏和NANO通讯是正常的。比如我用串口屏通过NANO控制电机是正常的。就是让陶晶驰i屏幕发送屏幕上滑块位置数据控制电机角度。让NRF24主机副机通讯主机用电位器控制副机电机角度也正常。就是加了串口屏后就不正常。
下面是串口屏编辑界面和屏幕串口输出数据(a1对应滑块位置数字)
:covx t0.txt,h0.val,0,0 (把文本t0的txt十进制数字字符串变量转换为数值并赋值给滑块h0的val数值变量, 长度为自动)
下面是我的主副机程序,本人编程小白痴一个。烦请各位高人嘴下留情别见笑。还请高人多多指点谢谢。
主机程序
#include <RF24.h>
#include <RF24Network.h>
#include <SPI.h>
RF24 radio(7, 8); // CE, CSN
RF24Network network(radio); // Include the radio in the network
const uint16_t this_node = 00; // Address of this node in Octal format ( 04,031, etc)
const uint16_t node01 = 01;
String dataIn = "";
int angleValue =0;
void setup() {
Serial.begin(9600);
SPI.begin();
radio.begin();
network.begin(90, this_node);
}
void loop() {
if ( Serial.available() > 0) {
dataIn = Serial.readString();}
if (dataIn.startsWith("a1")) {
String dataInS = dataIn.substring(2, dataIn.length()); // 如果开头是a1切取字符串开始2位后
delay (5);
network.update();
angleValue = dataInS.toInt();
RF24NetworkHeader header(node01); // (Address where the data is going)
bool ok = network.write(header, &angleValue, sizeof(angleValue));
}
}
副机程序
#include <RF24.h>
#include <RF24Network.h>
#include <SPI.h>
#include <Servo.h>
RF24 radio(7, 8); // CE, CSN
RF24Network network(radio);
const uint16_t this_node = 01;
Servo myServo;
void setup() {
Serial.begin(9600);
myServo.attach(5);
SPI.begin();
radio.begin();
network.begin(90, this_node); //(channel, node address)
}
void loop() {
network.update();
while ( network.available() ) { // Is there any incoming data?
RF24NetworkHeader header;
unsigned long angleValue;
network.read(header, &angleValue, sizeof(angleValue));// Read the incoming data
myServo.write(angleValue);
}
}
麻烦大师指点迷津了,谢谢。
|