我正在与LoRa做一个项目,这需要控制4个伺服,但通过LoRa通信,所以我发送它喜欢第一个伺服,它应该发送的值从0-180,对于下一个伺服,我发送181 - 361,继续为4伺服!但不幸的是,它不能发送255的值,我猜这是1个字节,如果我尝试发送超过255的值,例如256,它会接收0和257作为1,然后继续。有没有推荐或者通过初始化命令来增加它的方法?因为我知道Lora可以发送63个字节。我将附上下面的代码(用一个简单的代码简化):
发件人代码(TX)(Arduino UNO):
#include <SPI.h>
#include <LoRa.h>
int val = 256;
void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println("LoRa Sender");
if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
}
void loop() {
Serial.print("Sending packet: ");
// send packet
LoRa.beginPacket();
LoRa.print(val);
LoRa.endPacket();
delay(500);
}接收器代码(RX)(Arduino Mega):
#include <SPI.h>
#include <LoRa.h>
#define LORA_SS 53
#define LORA_RST 9
#define LORA_DIO0 8
String val;
void setup() {
pinMode(LORA_SS, OUTPUT);
digitalWrite(LORA_SS, HIGH);
LoRa.setPins(LORA_SS, LORA_RST, LORA_DIO0);
Serial.begin(9600);
while (!Serial);
Serial.println("LoRa Receiver");
if (!LoRa.begin(433E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
}
void loop() {
// try to parse packet
int packetSize = LoRa.parsePacket();
if (packetSize) {
// received a packet
Serial.print("Received packet '");
// read packet
while (LoRa.available()) {
val = LoRa.read();
}
Serial.print(val.toInt());
// print RSSI of packet
Serial.print("' with RSSI ");
Serial.println(LoRa.packetRssi());
}
}接收器的输出:
Received packet '0' with RSSI -5发布于 2020-10-11 09:53:50
int val = LoRa.read();中的val在while循环中只有一个scope。所以当你在作用域之外访问它时,你会得到0。
将val的声明移到while循环之外。
int val;
while (LoRa.available()) {
val = LoRa.read();
}
Serial.print(val.toInt());https://stackoverflow.com/questions/64293729
复制相似问题