我正在用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
答案 0 :(得分:0)
您在val
中的int val = LoRa.read();
仅在while
循环内有一个scope。因此,当您在范围之外访问它时,您将获得0。
将val
的声明移到while
循环之外。
int val;
while (LoRa.available()) {
val = LoRa.read();
}
Serial.print(val.toInt());