close #10
This commit is contained in:
73
crossbow.ino
73
crossbow.ino
@@ -3,8 +3,10 @@
|
|||||||
#define DEVICE_MODE_TX
|
#define DEVICE_MODE_TX
|
||||||
// #define DEVICE_MODE_RX
|
// #define DEVICE_MODE_RX
|
||||||
|
|
||||||
#define DEBUG_SERIAL
|
#define FEATURE_TX_OLED
|
||||||
// #define DEBUG_PING_PONG
|
|
||||||
|
// #define DEBUG_SERIAL
|
||||||
|
#define DEBUG_PING_PONG
|
||||||
// #define DEBUG_LED
|
// #define DEBUG_LED
|
||||||
// #define WAIT_FOR_SERIAL
|
// #define WAIT_FOR_SERIAL
|
||||||
|
|
||||||
@@ -25,14 +27,17 @@ int ppm[16] = {0};
|
|||||||
* Main defines for device working in TX mode
|
* Main defines for device working in TX mode
|
||||||
*/
|
*/
|
||||||
#ifdef DEVICE_MODE_TX
|
#ifdef DEVICE_MODE_TX
|
||||||
|
|
||||||
// #define OLED_RESET -1
|
|
||||||
#include <PPMReader.h>
|
#include <PPMReader.h>
|
||||||
// #include <Adafruit_SSD1306.h>
|
|
||||||
|
|
||||||
PPMReader ppmReader(PPM_INPUT_PIN, PPM_INPUT_INTERRUPT, true);
|
PPMReader ppmReader(PPM_INPUT_PIN, PPM_INPUT_INTERRUPT, true);
|
||||||
// PPMReader ppmReader(11, 2, MODE_PIN_CHANGE_INTERRUPT);
|
|
||||||
// Adafruit_SSD1306 display(OLED_RESET);
|
#ifdef FEATURE_TX_OLED
|
||||||
|
|
||||||
|
#define OLED_RESET -1
|
||||||
|
#include <Adafruit_SSD1306.h>
|
||||||
|
Adafruit_SSD1306 display(OLED_RESET);
|
||||||
|
uint32_t lastOledTaskTime = 0;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -143,15 +148,6 @@ void setup(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef DEVICE_MODE_RX
|
#ifdef DEVICE_MODE_RX
|
||||||
/*
|
|
||||||
* Initialize OLED display
|
|
||||||
*/
|
|
||||||
// display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32)
|
|
||||||
// display.setTextSize(1);
|
|
||||||
// display.setTextColor(WHITE);
|
|
||||||
// display.clearDisplay();
|
|
||||||
// display.display();
|
|
||||||
|
|
||||||
//initiallize default ppm values
|
//initiallize default ppm values
|
||||||
for (int i = 0; i < 16; i++)
|
for (int i = 0; i < 16; i++)
|
||||||
{
|
{
|
||||||
@@ -169,6 +165,15 @@ void setup(void)
|
|||||||
TCCR1A = 0; //reset timer1
|
TCCR1A = 0; //reset timer1
|
||||||
TCCR1B = 0;
|
TCCR1B = 0;
|
||||||
TCCR1B |= (1 << CS11); //set timer1 to increment every 0,5 us or 1us on 8MHz
|
TCCR1B |= (1 << CS11); //set timer1 to increment every 0,5 us or 1us on 8MHz
|
||||||
|
|
||||||
|
#ifdef FEATURE_TX_OLED
|
||||||
|
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32)
|
||||||
|
display.setTextSize(1);
|
||||||
|
display.setTextColor(WHITE);
|
||||||
|
display.clearDisplay();
|
||||||
|
display.display();
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
pinMode(LED_BUILTIN, OUTPUT);
|
pinMode(LED_BUILTIN, OUTPUT);
|
||||||
@@ -231,6 +236,40 @@ void loop(void)
|
|||||||
|
|
||||||
#ifdef DEVICE_MODE_TX
|
#ifdef DEVICE_MODE_TX
|
||||||
|
|
||||||
|
#ifdef FEATURE_TX_OLED
|
||||||
|
if (
|
||||||
|
currentMillis - lastOledTaskTime > OLED_UPDATE_RATE
|
||||||
|
) {
|
||||||
|
lastOledTaskTime = currentMillis;
|
||||||
|
|
||||||
|
display.clearDisplay();
|
||||||
|
|
||||||
|
display.setTextColor(WHITE, BLACK);
|
||||||
|
display.setCursor(0, 0);
|
||||||
|
display.print("TX RSSI: ");
|
||||||
|
display.print(map(getRadioRssi(), 0, 255, 0, 100));
|
||||||
|
|
||||||
|
display.setCursor(0, 12);
|
||||||
|
display.print("TX SNR: ");
|
||||||
|
display.print(getRadioSnr());
|
||||||
|
|
||||||
|
display.setCursor(0, 24);
|
||||||
|
display.print("RX RSSI: ");
|
||||||
|
display.print(map(rxDeviceState.rssi, 0, 255, 0, 100));
|
||||||
|
|
||||||
|
display.setCursor(0, 36);
|
||||||
|
display.print("RX SNR: ");
|
||||||
|
display.print(rxDeviceState.snr);
|
||||||
|
|
||||||
|
display.setCursor(0, 46);
|
||||||
|
display.print("Roundtrip: ");
|
||||||
|
display.print(rxDeviceState.roundtrip);
|
||||||
|
|
||||||
|
display.display();
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef DEBUG_PING_PONG
|
#ifdef DEBUG_PING_PONG
|
||||||
//PING frame
|
//PING frame
|
||||||
if (
|
if (
|
||||||
|
|||||||
15
qsp.cpp
15
qsp.cpp
@@ -256,18 +256,13 @@ void qspDecodeIncomingFrame(QspConfiguration_t *qsp, uint8_t incomingByte, int p
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case QSP_FRAME_PONG:
|
case QSP_FRAME_PONG:
|
||||||
if (qsp->debugConfig & DEBUG_FLAG_SERIAL) {
|
rxDeviceState->roundtrip = qsp->payload[0];
|
||||||
|
rxDeviceState->roundtrip += (uint32_t) qsp->payload[1] << 8;
|
||||||
|
rxDeviceState->roundtrip += (uint32_t) qsp->payload[2] << 16;
|
||||||
|
rxDeviceState->roundtrip += (uint32_t) qsp->payload[3] << 24;
|
||||||
|
|
||||||
uint32_t incoming = 0;
|
rxDeviceState->roundtrip = (micros() - rxDeviceState->roundtrip) / 1000;
|
||||||
|
|
||||||
incoming = qsp->payload[0];
|
|
||||||
incoming += (uint32_t) qsp->payload[1] << 8;
|
|
||||||
incoming += (uint32_t) qsp->payload[2] << 16;
|
|
||||||
incoming += (uint32_t) qsp->payload[3] << 24;
|
|
||||||
|
|
||||||
Serial.print("Rountrip: ");
|
|
||||||
Serial.println((micros() - incoming) / 1000);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#define OLED_UPDATE_RATE 300
|
||||||
|
|
||||||
#define SBUS_UPDATE_RATE 15 //ms
|
#define SBUS_UPDATE_RATE 15 //ms
|
||||||
#define SBUS_PACKET_LENGTH 25
|
#define SBUS_PACKET_LENGTH 25
|
||||||
|
|
||||||
@@ -9,11 +11,11 @@
|
|||||||
#define RX_TASK_HEALTH 200 //5Hz should be enough
|
#define RX_TASK_HEALTH 200 //5Hz should be enough
|
||||||
#define RSSI_CHANNEL 11
|
#define RSSI_CHANNEL 11
|
||||||
|
|
||||||
#define RX_RX_HEALTH_FRAME_RATE 500
|
#define RX_RX_HEALTH_FRAME_RATE 503
|
||||||
#define TX_RC_FRAME_RATE 50 //ms
|
#define TX_RC_FRAME_RATE 50 //ms
|
||||||
#define RX_FAILSAFE_DELAY (TX_RC_FRAME_RATE * 8)
|
#define RX_FAILSAFE_DELAY (TX_RC_FRAME_RATE * 8)
|
||||||
|
|
||||||
#define TX_PING_RATE 2000
|
#define TX_PING_RATE 2007
|
||||||
|
|
||||||
#define CHANNEL_ID 0x01
|
#define CHANNEL_ID 0x01
|
||||||
#define QSP_PREAMBLE 0x51
|
#define QSP_PREAMBLE 0x51
|
||||||
@@ -90,4 +92,5 @@ struct RxDeviceState_t {
|
|||||||
uint8_t rxVoltage = 0;
|
uint8_t rxVoltage = 0;
|
||||||
uint8_t a1Voltage = 0;
|
uint8_t a1Voltage = 0;
|
||||||
uint8_t a2Voltage = 0;
|
uint8_t a2Voltage = 0;
|
||||||
|
uint32_t roundtrip = 0;
|
||||||
};
|
};
|
||||||
Reference in New Issue
Block a user