move lora transmission to timer
This commit is contained in:
parent
5a7003d621
commit
f51f10574c
66
collar.cpp
66
collar.cpp
|
@ -37,7 +37,8 @@ uint8_t DevAddr[4] = {0x26, 0x02, 0x12, 0xB6};
|
||||||
unsigned char loraData[50] = {"hello LoRa"};
|
unsigned char loraData[50] = {"hello LoRa"};
|
||||||
|
|
||||||
// How many times data transfer should occur, in seconds
|
// How many times data transfer should occur, in seconds
|
||||||
const unsigned int sendInterval = 30;
|
// const unsigned int sendInterval = 30;
|
||||||
|
const unsigned int sendInterval = 60;
|
||||||
|
|
||||||
// Pinout for Adafruit Feather 32u4 LoRa
|
// Pinout for Adafruit Feather 32u4 LoRa
|
||||||
TinyLoRa lora = TinyLoRa(2, 10, 9);
|
TinyLoRa lora = TinyLoRa(2, 10, 9);
|
||||||
|
@ -61,7 +62,7 @@ void clear_verts() {
|
||||||
n_poly=0;
|
n_poly=0;
|
||||||
}
|
}
|
||||||
int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy)
|
int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy)
|
||||||
{ //from stack overflow
|
{ //from stack overflow, check that coordinate is within polygon boundary
|
||||||
int i, j, c = 0;
|
int i, j, c = 0;
|
||||||
for (i = 0, j = nvert-1; i < nvert; j = i++) {
|
for (i = 0, j = nvert-1; i < nvert; j = i++) {
|
||||||
if ( ((verty[i]>testy) != (verty[j]>testy)) &&
|
if ( ((verty[i]>testy) != (verty[j]>testy)) &&
|
||||||
|
@ -160,52 +161,55 @@ void setup()
|
||||||
while(true);
|
while(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
Fenceless_Coordinates coords;
|
Fenceless_CollarResponse coord;
|
||||||
coords.isr = 10;
|
coord.loc.x = 0;
|
||||||
coords.coord0.x = 1; coords.coord0.y = 2;
|
coord.loc.y = 0;
|
||||||
coords.coord1.x = 1; coords.coord1.y = 2;
|
|
||||||
coords.coord2.x = 1; coords.coord2.y = 2;
|
|
||||||
coords.coord3.x = 1; coords.coord3.y = 2;
|
|
||||||
coords.coord4.x = 1; coords.coord4.y = 2;
|
|
||||||
coords.coord5.x = 1; coords.coord5.y = 2;
|
|
||||||
coords.coord6.x = 1; coords.coord6.y = 2;
|
|
||||||
coords.coord7.x = 1; coords.coord7.y = 2;
|
|
||||||
coords.coord8.x = 1; coords.coord8.y = 2;
|
|
||||||
coords.coord9.x = 1; coords.coord9.y = 2;
|
|
||||||
|
|
||||||
pb_ostream_t stream;
|
pb_ostream_t stream;
|
||||||
stream = pb_ostream_from_buffer(loraData, sizeof(loraData));
|
stream = pb_ostream_from_buffer(loraData, sizeof(loraData));
|
||||||
int err = pb_encode(&stream, Fenceless_Coordinates_fields, &coords);
|
int err = pb_encode(&stream, Fenceless_CollarResponse_fields, &coord);
|
||||||
// Optional set transmit power. If not set default is +17 dBm.
|
// Optional set transmit power. If not set default is +17 dBm.
|
||||||
// Valid options are: -80, 1 to 17, 20 (dBm).
|
// Valid options are: -80, 1 to 17, 20 (dBm).
|
||||||
// For safe operation in 20dBm: your antenna must be 3:1 VWSR or better
|
// For safe operation in 20dBm: your antenna must be 3:1 VWSR or better
|
||||||
// and respect the 1% duty cycle.
|
// and respect the 1% duty cycle.
|
||||||
|
|
||||||
lora.setPower(1);
|
lora.setPower(1);
|
||||||
|
|
||||||
|
// start 1 second timer
|
||||||
|
TCCR1A = 0;
|
||||||
|
TCCR1B = 0;
|
||||||
|
|
||||||
|
TCNT1 = 34286; // preload timer
|
||||||
|
TCCR1B |= (1 << CS12); // 256 prescaler
|
||||||
|
TIMSK1 |= (1 << TOIE1); // enable timer overflow interrupt
|
||||||
|
|
||||||
Serial.println("OK");
|
Serial.println("OK");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sendCounter = 0;
|
||||||
|
ISR(TIMER1_OVF_vect) {
|
||||||
|
digitalWrite(LED_BUILTIN, sendCounter%2);
|
||||||
|
if(sendCounter==0) {
|
||||||
|
sendCounter = sendInterval;
|
||||||
|
|
||||||
|
Serial.println("Sending LoRa Data...");
|
||||||
|
lora.sendData(loraData, sizeof(loraData), lora.frameCounter);
|
||||||
|
// Optionally set the Frame Port (1 to 255)
|
||||||
|
// uint8_t framePort = 1;
|
||||||
|
// lora.sendData(loraData, sizeof(loraData), lora.frameCounter, framePort);
|
||||||
|
Serial.print("Frame Counter: ");Serial.println(lora.frameCounter);
|
||||||
|
lora.frameCounter++;
|
||||||
|
|
||||||
|
Serial.println("delaying...");
|
||||||
|
}
|
||||||
|
sendCounter--;
|
||||||
|
}
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
Serial.println("Sending LoRa Data...");
|
|
||||||
lora.sendData(loraData, sizeof(loraData), lora.frameCounter);
|
|
||||||
// Optionally set the Frame Port (1 to 255)
|
|
||||||
// uint8_t framePort = 1;
|
|
||||||
// lora.sendData(loraData, sizeof(loraData), lora.frameCounter, framePort);
|
|
||||||
Serial.print("Frame Counter: ");Serial.println(lora.frameCounter);
|
|
||||||
lora.frameCounter++;
|
|
||||||
|
|
||||||
// blink LED to indicate packet sent
|
|
||||||
digitalWrite(LED_BUILTIN, HIGH);
|
|
||||||
delay(1000);
|
|
||||||
digitalWrite(LED_BUILTIN, LOW);
|
|
||||||
|
|
||||||
Serial.println("delaying...");
|
|
||||||
|
|
||||||
if(recieved) {
|
if(recieved) {
|
||||||
Serial.println("Recieved something");
|
Serial.println("Recieved something");
|
||||||
} else {
|
} else {
|
||||||
Serial.println("Nothing yet");
|
Serial.println("Nothing yet");
|
||||||
}
|
}
|
||||||
delay(sendInterval * 1000);
|
delay(1000);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user