|
|
|
@ -5,13 +5,19 @@
|
|
|
|
|
|
|
|
|
|
// #include "BSEC/bsec_integration.h"
|
|
|
|
|
#include "SSDSpiInterface.hpp" |
|
|
|
|
#include "oled-driver/Renderer.hpp" |
|
|
|
|
#include "oled-driver/DualRenderer.hpp" |
|
|
|
|
#include "oled-driver/SSD1306.hpp" |
|
|
|
|
#include "oled-driver/fonts/dfi.hpp" |
|
|
|
|
|
|
|
|
|
#include "oled-driver/SSD1680.hpp" |
|
|
|
|
|
|
|
|
|
// oled display
|
|
|
|
|
SSDSpiInterface ssdSpiInterface; |
|
|
|
|
|
|
|
|
|
SSD1680 test(ssdSpiInterface); |
|
|
|
|
|
|
|
|
|
SSD1306 display(ssdSpiInterface); |
|
|
|
|
Renderer renderer(OledWidth, OledPages, display); |
|
|
|
|
DualRenderer renderer(296, 152, test); |
|
|
|
|
|
|
|
|
|
QueueHandle_t spiMutex = xSemaphoreCreateMutex(); |
|
|
|
|
QueueHandle_t spiBinary = xSemaphoreCreateBinary(); |
|
|
|
@ -20,10 +26,100 @@ QueueHandle_t spiBinary = xSemaphoreCreateBinary();
|
|
|
|
|
void initDisplay() |
|
|
|
|
{ |
|
|
|
|
HAL_GPIO_WritePin(DisplayReset_GPIO_Port, DisplayReset_Pin, GPIO_PIN_RESET); |
|
|
|
|
vTaskDelay(pdMS_TO_TICKS(1)); |
|
|
|
|
HAL_GPIO_WritePin(DisplayReset_GPIO_Port, DisplayReset_Pin, GPIO_PIN_SET); |
|
|
|
|
vTaskDelay(pdMS_TO_TICKS(1)); |
|
|
|
|
HAL_GPIO_WritePin(EINK_RS_GPIO_Port, EINK_RS_Pin, GPIO_PIN_RESET); |
|
|
|
|
|
|
|
|
|
vTaskDelay(pdMS_TO_TICKS(100)); |
|
|
|
|
// HAL_GPIO_WritePin(DisplayReset_GPIO_Port, DisplayReset_Pin, GPIO_PIN_SET);
|
|
|
|
|
HAL_GPIO_WritePin(EINK_RS_GPIO_Port, EINK_RS_Pin, GPIO_PIN_SET); |
|
|
|
|
vTaskDelay(pdMS_TO_TICKS(100)); |
|
|
|
|
|
|
|
|
|
test.selectLut(SSD1680::LutSelection::Red); |
|
|
|
|
test.init(); |
|
|
|
|
renderer.black.setFont(fontDfi); |
|
|
|
|
|
|
|
|
|
renderer.black.clearAll(); |
|
|
|
|
renderer.red.clearAll(); |
|
|
|
|
|
|
|
|
|
if (true) |
|
|
|
|
{ |
|
|
|
|
test.selectLut(SSD1680::LutSelection::None); |
|
|
|
|
test.init(); |
|
|
|
|
renderer.dualRender(); |
|
|
|
|
test.deepSleep(1); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
constexpr auto aL = Renderer::Alignment::Left; |
|
|
|
|
constexpr auto aC = Renderer::Alignment::Center; |
|
|
|
|
constexpr auto aR = Renderer::Alignment::Right; |
|
|
|
|
|
|
|
|
|
size_t page = 0; |
|
|
|
|
size_t maxNumberPixels = 0; |
|
|
|
|
size_t result = 0; |
|
|
|
|
|
|
|
|
|
bool scroll = false; |
|
|
|
|
|
|
|
|
|
if (!scroll) |
|
|
|
|
{ |
|
|
|
|
renderer.black.print({0, page}, "9", aL, 2); |
|
|
|
|
renderer.black.print({20, page}, "Neustädter See", aL, 2); |
|
|
|
|
renderer.black.print({296, page}, "jetzt", aR, 2); |
|
|
|
|
page += 2; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
renderer.black.print({0, page}, "1", aL, 2); |
|
|
|
|
renderer.black.print({20, page}, "Sudenburg", aL, 2); |
|
|
|
|
renderer.black.print({296, page}, "1min", aR, 2); |
|
|
|
|
page += 2; |
|
|
|
|
|
|
|
|
|
renderer.black.print({0, page}, "10", aL, 2); |
|
|
|
|
renderer.black.print({20, page}, "Barleber See", aL, 2); |
|
|
|
|
renderer.black.print({296, page}, "2min", aR, 2); |
|
|
|
|
page += 2; |
|
|
|
|
|
|
|
|
|
renderer.black.print({0, page}, "1", aL, 2); |
|
|
|
|
renderer.black.print({20, page}, "Kannenstieg", aL, 2); |
|
|
|
|
result = renderer.black.print({296, page}, "5min", aR, 2); |
|
|
|
|
maxNumberPixels = std::max(maxNumberPixels, result); |
|
|
|
|
page += 2; |
|
|
|
|
|
|
|
|
|
renderer.black.print({0, page}, "9", aL, 2); |
|
|
|
|
renderer.black.print({20, page}, "Reform", aL, 2); |
|
|
|
|
result = renderer.black.print({296, page}, "55min", aR, 2); |
|
|
|
|
maxNumberPixels = std::max(maxNumberPixels, result); |
|
|
|
|
page += 2; |
|
|
|
|
|
|
|
|
|
renderer.black.print({0, page}, "10", aL, 2); |
|
|
|
|
renderer.black.print({20, page}, "Rothensee", aL, 2); |
|
|
|
|
result = renderer.black.print({296, page}, "107min", aR, 2); |
|
|
|
|
maxNumberPixels = std::max(maxNumberPixels, result); |
|
|
|
|
page += 2; |
|
|
|
|
|
|
|
|
|
renderer.red.print({0, page}, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", aL, 2); |
|
|
|
|
|
|
|
|
|
page = scroll ? 2 : 3; |
|
|
|
|
|
|
|
|
|
const auto PositionX = 296 - maxNumberPixels - 4; |
|
|
|
|
result = renderer.black.print({PositionX, page}, ")", aR, 2); |
|
|
|
|
auto result2 = renderer.red.print({PositionX - result, page}, "-8", aR, 2); |
|
|
|
|
renderer.black.print({PositionX - result - result2, page}, "(", aR, 2); |
|
|
|
|
page += 2; |
|
|
|
|
|
|
|
|
|
result = renderer.black.print({PositionX, page}, ")", aR, 2); |
|
|
|
|
result2 = renderer.red.print({PositionX - result, page}, "+2", aR, 2); |
|
|
|
|
renderer.black.print({PositionX - result - result2, page}, "(", aR, 2); |
|
|
|
|
page += 2; |
|
|
|
|
|
|
|
|
|
result = renderer.black.print({PositionX, page}, ")", aR, 2); |
|
|
|
|
result2 = renderer.red.print({PositionX - result, page}, "+22", aR, 2); |
|
|
|
|
renderer.black.print({PositionX - result - result2, page}, "(", aR, 2); |
|
|
|
|
page += 2; |
|
|
|
|
|
|
|
|
|
renderer.dualRender(); |
|
|
|
|
|
|
|
|
|
test.deepSleep(1); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
display.setDisplayState(SSD1306::DisplayState::Off); |
|
|
|
|
display.setMultiplexRatio(OledPages * 8 - 1); |
|
|
|
|
display.setComPinConfig(false, false); |
|
|
|
@ -39,6 +135,7 @@ void initDisplay()
|
|
|
|
|
display.setColumnAddress(0, OledWidth - 1); // columns from 0 to 127
|
|
|
|
|
|
|
|
|
|
display.setDisplayState(SSD1306::DisplayState::On); |
|
|
|
|
*/ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
|