1
0
mirror of https://github.com/sandeepmistry/arduino-LoRa.git synced 2025-07-31 10:24:22 +03:00

Some tweaks to new examples

This commit is contained in:
Sandeep Mistry
2017-05-28 18:13:21 -04:00
parent b894e71202
commit 21ace81a59
5 changed files with 97 additions and 71 deletions

View File

@ -6,18 +6,20 @@
with 0xFF as the broadcast address.
Uses readString() from Stream class to read payload. The Stream class'
timeout may affect other functuons, like the radio's callback. For an
timeout may affect other functuons, like the radio's callback. For an
created 28 April 2017
by Tom Igoe
*/
#include <SPI.h> // include libraries
#include <LoRa.h>
const int csPin = 7; // LoRa radio chip select
const int resetPin = 6; // LoRa radio reset
const int irqPin = 1; // change for your board; must be a hardware interrupt pin
String outgoing; // outgoing message
byte msgCount = 0; // count of outgoing messages
byte localAddress = 0xBB; // address of this device
byte destination = 0xFF; // destination to send to
@ -25,32 +27,33 @@ long lastSendTime = 0; // last send time
int interval = 2000; // interval between sends
void setup() {
while (!Serial);
Serial.begin(9600); // initialize serial
while (!Serial);
Serial.println("LoRa Duplex");
// override the default CS, reset, and IRQ pins (optional)
LoRa.setPins(csPin, resetPin, irqPin);// set CS, reset, IRQ pin
if (!LoRa.begin(915E6)) { // initialize ratio at 915Mhz
if (!LoRa.begin(915E6)) { // initialize ratio at 915 MHz
Serial.println("LoRa init failed. Check your connections.");
while (true); // if failed, do nothing
}
LoRa.setTimeout(10); // set Stream timeout of 10ms
Serial.println("LoRa init succeeded.");
Serial.println("LoRa init succeeded.");
}
void loop() {
if (millis() - lastSendTime > interval) {
String message = "HeLoRa World!"; // send a message
sendMessage(message);
Serial.println("Sending " + message);
lastSendTime = millis(); // timestamp the message
interval = random(2000) + 1000; // 2-3 seconds
}
if (millis() - lastSendTime > interval) {
String message = "HeLoRa World!"; // send a message
sendMessage(message);
Serial.println("Sending " + message);
lastSendTime = millis(); // timestamp the message
interval = random(2000) + 1000; // 2-3 seconds
}
// parse for a packet, and call onReceive with the result:
onReceive(LoRa.parsePacket());
onReceive(LoRa.parsePacket());
}
void sendMessage(String outgoing) {
@ -64,7 +67,6 @@ void sendMessage(String outgoing) {
msgCount++; // increment message ID
}
void onReceive(int packetSize) {
if (packetSize == 0) return; // if there's no packet, return
@ -73,10 +75,13 @@ void onReceive(int packetSize) {
byte sender = LoRa.read(); // sender address
byte incomingMsgId = LoRa.read(); // incoming msg ID
byte incomingLength = LoRa.read(); // incoming msg length
String incoming = "";
while (LoRa.available()) {
incoming += (char)LoRa.read();
incoming += (char)LoRa.read();
}
if (incomingLength != incoming.length()) { // check length for error
Serial.println("error: message length does not match length");
return; // skip rest of function
@ -89,13 +94,13 @@ void onReceive(int packetSize) {
}
// if message is for this device, or broadcast, print details:
Serial.println("Received from:" + String(sender, HEX));
Serial.println("Sent to:" + String(recipient, HEX));
Serial.println("Message ID:" + String(incomingMsgId));
Serial.println("Message length:" + String(incomingLength));
Serial.println("Message:" + incoming);
Serial.println("RSSI:" + String(LoRa.packetRssi()));
Serial.println("Snr:" + String(LoRa.packetSnr()));
Serial.println("Received from: 0x" + String(sender, HEX));
Serial.println("Sent to: 0x" + String(recipient, HEX));
Serial.println("Message ID: " + String(incomingMsgId));
Serial.println("Message length: " + String(incomingLength));
Serial.println("Message: " + incoming);
Serial.println("RSSI: " + String(LoRa.packetRssi()));
Serial.println("Snr: " + String(LoRa.packetSnr()));
Serial.println();
}