SSD1306 OLED display driver  1.4.12
This library is developed to control SSD1306/SSD1331 RGB i2c/spi OLED displays and spi PCD8544 LED display
tiny_ssd1306.h
Go to the documentation of this file.
1 /*
2  MIT License
3 
4  Copyright (c) 2017-2018, Alexey Dynda
5 
6  Permission is hereby granted, free of charge, to any person obtaining a copy
7  of this software and associated documentation files (the "Software"), to deal
8  in the Software without restriction, including without limitation the rights
9  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10  copies of the Software, and to permit persons to whom the Software is
11  furnished to do so, subject to the following conditions:
12 
13  The above copyright notice and this permission notice shall be included in all
14  copies or substantial portions of the Software.
15 
16  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22  SOFTWARE.
23 */
29 #ifndef _TINY_SSD1306_H_
30 #define _TINY_SSD1306_H_
31 
32 #include "ssd1306.h"
33 #include "i2c/ssd1306_i2c.h"
35 #include "i2c/ssd1306_i2c_wire.h"
36 #include "spi/ssd1306_spi.h"
37 #include <stdint.h>
38 #include "Print.h"
39 
40 
42 #define SSD1306_128x64 &ssd1306_128x64_init
43 
44 #define SSD1306_128x32 &ssd1306_128x32_init
45 
46 #define SH1106_128x64 &sh1106_128x64_init
47 
62 class TinySSD1306: public Print
63 {
64 public:
71  explicit TinySSD1306( InitFunction lcd ) { m_init = lcd; };
72 
77  void begin()
78  {
79  m_init();
80  };
81 
91  void beginI2C(int8_t scl = -1, int8_t sda = -1, uint8_t addr = 0)
92  {
93  ssd1306_i2cInitEx(scl, sda, addr);
94  m_init();
95  };
96 
97 #ifdef SSD1306_I2C_SW_SUPPORTED
98 
108  void beginI2CEmbedded(int8_t scl = -1, int8_t sda = -1, uint8_t addr = 0)
109  {
110  ssd1306_i2cInit_Embedded(scl, sda, addr);
111  m_init();
112  }
113 #endif
114 
115 #ifdef SSD1306_WIRE_SUPPORTED
116 
126  void beginI2CWire(int8_t scl = -1, int8_t sda = -1, uint8_t addr = 0)
127  {
128  ssd1306_i2cConfigure_Wire(scl, sda);
129  ssd1306_i2cInit_Wire(addr);
130  m_init();
131  }
132 #endif
133 
141  void beginSPI(int8_t csPin = -1, int8_t dcPin = -1)
142  {
143  ssd1306_spiInit(csPin, dcPin);
144  m_init();
145  };
146 
150  void off()
151  {
153  };
154 
158  void on()
159  {
161  };
162 
167  void invertMode()
168  {
170  };
171 
175  void normalMode()
176  {
178  };
179 
183  uint8_t height()
184  {
185  return ssd1306_displayHeight();
186  };
187 
191  uint8_t width()
192  {
193  return ssd1306_displayWidth();
194  };
195 
201  void setCursor(uint8_t x, uint8_t y)
202  {
203  m_xpos = x;
204  m_ypos = y;
205  }
206 
211  void fill(uint8_t fill_Data)
212  {
213  ssd1306_fillScreen(fill_Data);
214  };
215 
219  void clear();
220 
226  {
228  };
229 
235  {
237  };
238 
247  uint8_t charF6x8(uint8_t x, uint8_t y,
248  const char ch[],
249  EFontStyle style = STYLE_NORMAL )
250  {
251  return ssd1306_charF6x8(x, y, ch, style);
252  };
253 
262  uint8_t charF12x16(uint8_t xpos, uint8_t y,
263  const char ch[],
264  EFontStyle style = STYLE_NORMAL)
265  {
266  return ssd1306_charF12x16( xpos, y, ch, style );
267  };
268 
269 
282  uint8_t charF6x8_eol(uint8_t left, uint8_t y,
283  const char ch[],
284  EFontStyle style,
285  uint8_t right)
286  {
287  return ssd1306_charF6x8_eol(left, y, ch, style, right);
288  };
289 
302  void putPixel(uint8_t x, uint8_t y)
303  {
304  ssd1306_putPixel(x,y);
305  };
306 
321  void putPixels(uint8_t x, uint8_t y, uint8_t pixels)
322  {
323  ssd1306_putPixels(x,y,pixels);
324  };
325 
333  void drawRect(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2)
334  {
335  ssd1306_drawRect(x1, y1, x2, y2);
336  };
337 
344  void drawHLine(uint8_t x1, uint8_t y1, uint8_t x2)
345  {
346  ssd1306_drawHLine(x1, y1, x2);
347  };
348 
355  void drawVLine(uint8_t x1, uint8_t y1, uint8_t y2)
356  {
357  ssd1306_drawVLine(x1, y1, y2);
358  };
359 
376  void drawBuffer(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf)
377  {
378  ssd1306_drawBuffer(x,y,w,h,buf);
379  };
380 
390  void drawBitmap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf)
391  {
392  ssd1306_drawBitmap(x,y,w,h,buf);
393  };
394 
403  void clearBlock(uint8_t x, uint8_t y, uint8_t w, uint8_t h)
404  {
405  ssd1306_clearBlock(x,y,w,h);
406  };
407 
412  virtual size_t write(uint8_t ch);
413 private:
414 
416  InitFunction m_init;
417 
418  uint8_t m_xpos = 0;
419  uint8_t m_ypos = 0;
420 };
421 
422 #endif
423 
uint8_t height()
Definition: tiny_ssd1306.h:183
void drawHLine(uint8_t x1, uint8_t y1, uint8_t x2)
Definition: tiny_ssd1306.h:344
void ssd1306_drawBitmap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf)
Definition: ssd1306.c:627
uint8_t ssd1306_displayWidth()
Definition: ssd1306.c:51
void ssd1306_i2cInit_Embedded(int8_t scl, int8_t sda, uint8_t sa)
void drawRect(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2)
Definition: tiny_ssd1306.h:333
uint8_t charF6x8_eol(uint8_t left, uint8_t y, const char ch[], EFontStyle style, uint8_t right)
Definition: tiny_ssd1306.h:282
void begin()
Definition: tiny_ssd1306.h:77
void ssd1306_negativeMode()
Definition: ssd1306.c:855
void ssd1306_drawHLine(uint8_t x1, uint8_t y1, uint8_t x2)
Definition: ssd1306.c:570
void beginI2CWire(int8_t scl=-1, int8_t sda=-1, uint8_t addr=0)
Definition: tiny_ssd1306.h:126
uint8_t ssd1306_displayHeight()
Definition: ssd1306.c:46
void putPixel(uint8_t x, uint8_t y)
Definition: tiny_ssd1306.h:302
void putPixels(uint8_t x, uint8_t y, uint8_t pixels)
Definition: tiny_ssd1306.h:321
void clearBlock(uint8_t x, uint8_t y, uint8_t w, uint8_t h)
Definition: tiny_ssd1306.h:403
void ssd1306_drawVLine(uint8_t x1, uint8_t y1, uint8_t y2)
Definition: ssd1306.c:580
TinySSD1306(InitFunction lcd)
Definition: tiny_ssd1306.h:71
void ssd1306_putPixels(uint8_t x, uint8_t y, uint8_t pixels)
Definition: ssd1306.c:498
void beginI2CEmbedded(int8_t scl=-1, int8_t sda=-1, uint8_t addr=0)
Definition: tiny_ssd1306.h:108
uint8_t width()
Definition: tiny_ssd1306.h:191
void ssd1306_i2cInitEx(int8_t scl, int8_t sda, int8_t sa)
void fill(uint8_t fill_Data)
Definition: tiny_ssd1306.h:211
void negativeMode()
Definition: tiny_ssd1306.h:225
void(* InitFunction)(void)
void ssd1306_invertMode()
Definition: ssd1306.c:823
void ssd1306_fillScreen(uint8_t fill_Data)
Definition: ssd1306.c:56
void ssd1306_drawRect(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2)
Definition: ssd1306.c:604
void ssd1306_i2cConfigure_Wire(int8_t scl, int8_t sda)
uint8_t charF6x8(uint8_t x, uint8_t y, const char ch[], EFontStyle style=STYLE_NORMAL)
Definition: tiny_ssd1306.h:247
void ssd1306_positiveMode()
Definition: ssd1306.c:860
void positiveMode()
Definition: tiny_ssd1306.h:234
void ssd1306_clearBlock(uint8_t x, uint8_t y, uint8_t w, uint8_t h)
Definition: ssd1306.c:700
void beginSPI(int8_t csPin=-1, int8_t dcPin=-1)
Initializes default custom spi interface and lcd display.
Definition: tiny_ssd1306.h:141
uint8_t ssd1306_charF6x8_eol(uint8_t left, uint8_t y, const char ch[], EFontStyle style, uint8_t right)
Definition: ssd1306.c:463
void ssd1306_i2cInit_Wire(uint8_t sa)
void normalMode()
Definition: tiny_ssd1306.h:175
void ssd1306_drawBuffer(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf)
Definition: ssd1306.c:612
void ssd1306_displayOn()
Definition: ssd1306.c:92
void setCursor(uint8_t x, uint8_t y)
Definition: tiny_ssd1306.h:201
uint8_t ssd1306_charF12x16(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style)
Definition: ssd1306.c:390
void drawBitmap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf)
Definition: tiny_ssd1306.h:390
void ssd1306_putPixel(uint8_t x, uint8_t y)
Definition: ssd1306.c:491
uint8_t charF12x16(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style=STYLE_NORMAL)
Definition: tiny_ssd1306.h:262
void ssd1306_normalMode()
Definition: ssd1306.c:831
EFontStyle
void ssd1306_spiInit(int8_t cesPin, int8_t dcPin)
Definition: ssd1306_spi.c:38
void ssd1306_displayOff()
Definition: ssd1306.c:86
void beginI2C(int8_t scl=-1, int8_t sda=-1, uint8_t addr=0)
Definition: tiny_ssd1306.h:91
uint8_t ssd1306_charF6x8(uint8_t x, uint8_t y, const char ch[], EFontStyle style)
Definition: ssd1306.c:345
void drawVLine(uint8_t x1, uint8_t y1, uint8_t y2)
Definition: tiny_ssd1306.h:355
virtual size_t write(uint8_t ch)
void drawBuffer(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf)
Definition: tiny_ssd1306.h:376
void invertMode()
Definition: tiny_ssd1306.h:167