I am making a project with LoRa which needs to control 4 servos but through LoRa communication so I sent it like for the first servo it should send values from 0-180 and for the next servo I sent 181 - 361 and goes on for 4 servos! But unfortunately it cannot send values fore that 255 which I guess is 1 byte and if I try to send more that 255 for example 256 it receives as 0 and 257 as 1 and goes on. Is there a commend or way to increase it by a initializing command? Because I know that Lora can send unto 63 bytes.I will attach the code below(Simplified with a simple code):
Sender code(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);
}
Receiver Code(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());
}
}
Output of the Receiver :
Received packet '0' with RSSI -5
Your
val
in theint val = LoRa.read();
has a scope only within thewhile
loop. So when you access it outside of the scope, you get 0.Move the declaration of the
val
outside of thewhile
loop.