Add U8X8 carousel screens

This commit is contained in:
2026-05-26 22:07:04 +03:00
parent db5ae6eb6b
commit 68ee8c210b
6 changed files with 263 additions and 6 deletions
+31
View File
@@ -0,0 +1,31 @@
#ifndef CAROUSEL_H
#define CAROUSEL_H
#include <Arduino.h>
#include <U8g2lib.h>
#include "screens.h"
class Carousel {
public:
Carousel(Screen *screens, size_t screenCount);
void begin(unsigned long now);
void update(unsigned long now);
void next(unsigned long now);
void render(U8X8 &display) const;
bool consumeDirty();
private:
Screen *screens_;
size_t screenCount_;
size_t currentIndex_;
unsigned long nextAutoAdvanceAt_;
unsigned long manualModeUntil_;
bool dirty_;
void scheduleNextAdvance(unsigned long now);
void drawIndicators(U8X8 &display) const;
};
#endif
+22
View File
@@ -0,0 +1,22 @@
#ifndef DISPLAY_CONFIG_H
#define DISPLAY_CONFIG_H
#include <Arduino.h>
namespace display_config {
constexpr uint8_t kNextButtonPin = A4;
constexpr unsigned long kAutoAdvanceIntervalMs = 10000;
constexpr unsigned long kManualHoldIntervalMs = 60000;
constexpr unsigned long kButtonDebounceMs = 150;
constexpr unsigned long kDebugLogIntervalMs = 500;
constexpr uint8_t kDisplayColumns = 16;
constexpr uint8_t kDisplayRows = 8;
constexpr uint8_t kIndicatorRow = 7;
constexpr uint8_t kIndicatorSpacing = 2;
} // namespace display_config
#endif
+16
View File
@@ -0,0 +1,16 @@
#ifndef SCREENS_H
#define SCREENS_H
#include <U8g2lib.h>
struct Screen {
const char *title;
void (*render)(U8X8 &display);
};
void renderTimeScreen(U8X8 &display);
void renderWeatherScreen(U8X8 &display);
void renderTemperatureScreen(U8X8 &display);
void renderHumidityScreen(U8X8 &display);
#endif