Byggern
oled.h
1 #pragma once
2 
3 #include <avr/io.h>
4 
5 #include "../stream/stream.h"
6 
10 class OLED : public Stream {
11 
12 protected:
13 
17  OLED();
18 
26  virtual void WriteByteToOLED(volatile uint8_t *address, uint8_t data) {};
27 
31  uint8_t current_line = 0;
32 
36  uint8_t display_width = 0;
37 
41  uint8_t display_height = 0;
42 
46  uint8_t number_of_pages = 0;
47 
51  uint8_t number_of_lines = 0;
52 
56  volatile uint8_t *oled_command = (volatile uint8_t*)0x8000;
57 
61  volatile uint8_t *oled_data = (volatile uint8_t*)0x8100;
62 
67  uint8_t **matrix;
68 
72  uint8_t pixels_per_line;
73 
77  uint8_t *font = nullptr;
78 
82  uint8_t font_width;
83 
87  uint8_t font_height;
88 
93  void GetBitmapForCharacter(char character, uint8_t* &character_bitmap);
94 
95 
96 public:
97 
103  void Init(uint8_t width, uint8_t height);
104 
109  void GoToLine(uint8_t line);
110 
114  void Clear();
115 
119  void ClearLine();
120 
127  void WriteByte(uint8_t page, uint8_t column, uint8_t byte);
128 
136  void WriteByteArray(uint8_t page, uint8_t column, uint8_t *byte_array, uint8_t length);
137 
141  void Repaint();
142 
147  void SetNumberOfLines(uint8_t number_of_lines);
148 
159  void WriteBitmap(uint8_t **pixels, uint8_t bitmap_width, uint8_t bitmap_height, uint8_t x, uint8_t y, bool is_progmem);
160 
168  void SetFont(uint8_t *font, uint8_t width, uint8_t height);
169 
178  void WriteLine(char* string, uint8_t length, uint8_t line, uint8_t offset);
179 
185  uint8_t GetYCoordinateFromLineNumber(uint8_t line);
186 
191  uint8_t GetMaxLineCharacters();
192 };
This class is an interface for implementing a duplex FIFO stream.
Definition: stream.h:19
uint8_t display_width
Definition: oled.h:36
virtual void WriteByteToOLED(volatile uint8_t *address, uint8_t data)
Definition: oled.h:26
void GetBitmapForCharacter(char character, uint8_t *&character_bitmap)
Definition: oled.cpp:97
volatile uint8_t * oled_command
Definition: oled.h:56
void SetFont(uint8_t *font, uint8_t width, uint8_t height)
Definition: oled.cpp:144
volatile uint8_t * oled_data
Definition: oled.h:61
uint8_t current_line
Definition: oled.h:31
uint8_t * font
Definition: oled.h:77
uint8_t font_width
Definition: oled.h:82
uint8_t ** matrix
Definition: oled.h:67
An interface to communicate with the OLED display.
Definition: oled.h:10
uint8_t GetYCoordinateFromLineNumber(uint8_t line)
Definition: oled.cpp:165
void Init(uint8_t width, uint8_t height)
Definition: oled.cpp:16
uint8_t font_height
Definition: oled.h:87
void WriteBitmap(uint8_t **pixels, uint8_t bitmap_width, uint8_t bitmap_height, uint8_t x, uint8_t y, bool is_progmem)
Definition: oled.cpp:102
OLED()
Definition: oled.cpp:14
void GoToLine(uint8_t line)
Definition: oled.cpp:55
uint8_t pixels_per_line
Definition: oled.h:72
void Repaint()
Definition: oled.cpp:83
uint8_t display_height
Definition: oled.h:41
void WriteLine(char *string, uint8_t length, uint8_t line, uint8_t offset)
Definition: oled.cpp:150
void ClearLine()
Definition: oled.cpp:67
uint8_t number_of_pages
Definition: oled.h:46
void WriteByte(uint8_t page, uint8_t column, uint8_t byte)
Definition: oled.cpp:73
void Clear()
Definition: oled.cpp:59
uint8_t GetMaxLineCharacters()
Definition: oled.cpp:169
void WriteByteArray(uint8_t page, uint8_t column, uint8_t *byte_array, uint8_t length)
Definition: oled.cpp:77
uint8_t number_of_lines
Definition: oled.h:51
void SetNumberOfLines(uint8_t number_of_lines)
Definition: oled.cpp:91