Basic init page

This commit is contained in:
Pawel Spychalski (DzikuVx)
2018-05-14 20:08:45 +02:00
parent 755f9ffbab
commit d31761a4b3
4 changed files with 97 additions and 49 deletions

View File

@@ -18,7 +18,7 @@
#define DEVICE_MODE_TX #define DEVICE_MODE_TX
// #define DEVICE_MODE_RX // #define DEVICE_MODE_RX
// #define FEATURE_TX_OLED #define FEATURE_TX_OLED
// #define FORCE_TX_WITHOUT_INPUT // #define FORCE_TX_WITHOUT_INPUT
/* /*
@@ -32,6 +32,5 @@
#define DEBUG_SERIAL #define DEBUG_SERIAL
// #define DEBUG_PING_PONG // #define DEBUG_PING_PONG
// #define DEBUG_LED // #define DEBUG_LED
// #define DEBUG_TX_INPUT_ON_OLED
#endif #endif

View File

@@ -57,13 +57,8 @@ volatile int16_t TxInput::channels[TX_INPUT_CHANNEL_COUNT];
BuzzerState_t buzzer; BuzzerState_t buzzer;
#ifdef FEATURE_TX_OLED #ifdef FEATURE_TX_OLED
#include "Wire.h" #include "tx_oled.h"
TxOled oled;
#define OLED_RESET -1
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(OLED_RESET);
uint32_t lastOledTaskTime = 0;
#endif #endif
#include "tactile.h" #include "tactile.h"
@@ -71,11 +66,6 @@ uint32_t lastOledTaskTime = 0;
Tactile button0(BUTTON_0_PIN); Tactile button0(BUTTON_0_PIN);
Tactile button1(BUTTON_1_PIN); Tactile button1(BUTTON_1_PIN);
// uint8_t buttonStates[2] = {HIGH, HIGH};
// uint8_t previousButtonStates[2] = {HIGH, HIGH};
// uint32_t buttonPressMillis[2] = {0, 0};
// uint8_t buttonAction[2] = {BUTTON_ACTION_NONE, BUTTON_ACTION_NONE};
#endif #endif
/* /*
@@ -252,13 +242,8 @@ void setup(void)
#ifdef DEVICE_MODE_TX #ifdef DEVICE_MODE_TX
#ifdef FEATURE_TX_OLED #ifdef FEATURE_TX_OLED
Wire.setClock(400000); oled.init(&radioState);
oled.page(TX_PAGE_INIT);
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
/* /*
@@ -625,41 +610,38 @@ void loop(void)
} }
#ifdef FEATURE_TX_OLED #ifdef FEATURE_TX_OLED
if ( // if (
currentMillis - lastOledTaskTime > OLED_UPDATE_RATE // currentMillis - lastOledTaskTime > OLED_UPDATE_RATE
) { // ) {
lastOledTaskTime = currentMillis; // lastOledTaskTime = millis();
display.clearDisplay();
display.setTextColor(WHITE, BLACK);
display.setCursor(0, 0);
display.setTextSize(3);
display.print(radioState.rssi);
display.setCursor(18, 28); // display.setTextColor(WHITE, BLACK);
display.setTextSize(2); // display.setCursor(0, 0);
display.print(radioState.snr); // display.setTextSize(3);
// display.print(radioState.rssi);
display.setCursor(74, 0); // display.setCursor(18, 28);
display.setTextSize(3); // display.setTextSize(2);
display.print(rxDeviceState.rssi); // display.print(radioState.snr);
display.setCursor(92, 28); // display.setCursor(74, 0);
display.setTextSize(2); // display.setTextSize(3);
display.print(rxDeviceState.snr); // display.print(rxDeviceState.rssi);
#ifdef DEBUG_TX_INPUT_ON_OLED // display.setCursor(92, 28);
display.setCursor(0, 48); // display.setTextSize(2);
display.setTextSize(2); // display.print(rxDeviceState.snr);
display.print(txInput.channels[0]);
#endif
display.setCursor(54, 48); // display.setCursor(54, 48);
display.setTextSize(2); // display.setTextSize(2);
display.print(txDeviceState.roundtrip); // display.print(txDeviceState.roundtrip);
// display.display();
display.display(); // Serial.println(millis() - lastOledTaskTime);
} // }
#endif #endif
/* /*

39
crossbow/tx_oled.cpp Normal file
View File

@@ -0,0 +1,39 @@
#include "tx_oled.h"
TxOled::TxOled(void) {
Adafruit_SSD1306 _display(-1);
}
void TxOled::init(volatile RadioState_t *radioState) {
_display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32)
_display.setTextSize(1);
_display.setTextColor(WHITE);
_display.clearDisplay();
_display.display();
_radioState = radioState;
}
void TxOled::page(int page) {
switch (page) {
case TX_PAGE_INIT:
pageInit();
break;
}
}
void TxOled::pageInit(void) {
_display.clearDisplay();
_display.setTextColor(WHITE, BLACK);
_display.setCursor(0, 0);
_display.setTextSize(2);
_display.print("Rdy ");
_display.print(_radioState->loraTxPower);
_display.print("dBm");
}

28
crossbow/tx_oled.h Normal file
View File

@@ -0,0 +1,28 @@
#pragma once
#ifndef TX_OLED_H
#define TX_OLED_H
#include <Adafruit_SSD1306.h>
#include "Wire.h"
#include "variables.h"
#define OLED_RESET -1
enum txOledPages {
TX_PAGE_NONE,
TX_PAGE_INIT,
};
class TxOled {
public:
TxOled(void);
void init(volatile RadioState_t *radioState);
void page(int page);
private:
volatile RadioState_t *_radioState;
Adafruit_SSD1306 _display;
void pageInit(void);
};
#endif