SSD1306 OLED display driver  1.5.0
This library is developed to control SSD1306/SSD1331 RGB i2c/spi OLED displays and spi PCD8544 LED display
ssd1306.h
Go to the documentation of this file.
1 /*
2  MIT License
3 
4  Copyright (c) 2016-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 _SSD1306_H_
30 #define _SSD1306_H_
31 
32 #include "ssd1331_api.h"
33 #include "nano_gfx_types.h"
34 #include "ssd1306_fonts.h"
35 #include "i2c/ssd1306_i2c_conf.h"
36 #include "spi/ssd1306_spi_conf.h"
37 #include "lcd/oled_ssd1306.h"
38 #include "lcd/oled_ssd1331.h"
39 #include "lcd/oled_ssd1351.h"
40 #include "lcd/oled_sh1106.h"
41 #include "lcd/lcd_pcd8544.h"
42 
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46 
48 #define RGB_COLOR8(r,g,b) ( (r & 0xE0) | ((g >> 3)&0x1C) | (b>>6) )
49 
51 #define RGB_COLOR16(r,g,b) ( ((r<<8) & 0xF800) | ((g << 3)&0x07E0) | (b>>3) )
52 
54 // DISPLAY CONTROL FUNCTIONS
56 
69 void ssd1306_displayOff(void);
70 
74 void ssd1306_displayOn(void);
75 
80 void ssd1306_setContrast(uint8_t contrast);
81 
87 void ssd1306_invertMode(void);
88 
93 void ssd1306_normalMode(void);
94 
104 void ssd1306_flipHorizontal(uint8_t mode);
105 
115 void ssd1306_flipVertical(uint8_t mode);
116 
121 uint8_t ssd1306_displayHeight(void);
122 
127 uint8_t ssd1306_displayWidth(void);
128 
133 // DIRECT GRAPH FUNCTIONS
136 
155 void ssd1306_setPos(uint8_t x, uint8_t y);
156 
160 void ssd1306_fillScreen(uint8_t fill_Data);
161 
165 void ssd1306_clearScreen(void);
166 
171 void ssd1306_negativeMode(void);
172 
177 void ssd1306_positiveMode(void);
178 
193 uint8_t ssd1306_printFixed(uint8_t xpos, uint8_t y, const char *ch, EFontStyle style);
194 
209 uint8_t ssd1306_printFixed2x(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style) __attribute__ ((deprecated));
210 
230 uint8_t ssd1306_printFixedN(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style, uint8_t factor);
231 
240 uint8_t ssd1306_charF6x8(uint8_t x, uint8_t y,
241  const char ch[],
242  EFontStyle style
243 #ifdef __cplusplus
244  = STYLE_NORMAL
245 #endif
246  ) __attribute__ ((deprecated));
247 
256 uint8_t ssd1306_charF12x16(uint8_t xpos,
257  uint8_t y,
258  const char ch[],
259  EFontStyle style) __attribute__ ((deprecated));
260 
261 
274 uint8_t ssd1306_charF6x8_eol(uint8_t left,
275  uint8_t y,
276  const char ch[],
277  EFontStyle style,
278  uint8_t right) __attribute__ ((deprecated));
279 
298 void ssd1306_setFixedFont(const uint8_t * progmemFont);
299 
310 void ssd1306_setFont6x8(const uint8_t * progmemFont) __attribute__ ((deprecated));
311 
324 void ssd1306_putPixel(uint8_t x, uint8_t y);
325 
340 void ssd1306_putPixels(uint8_t x, uint8_t y, uint8_t pixels);
341 
349 void ssd1306_drawRect(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2);
350 
363 void ssd1306_drawLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2);
364 
371 void ssd1306_drawHLine(uint8_t x1, uint8_t y1, uint8_t x2);
372 
379 void ssd1306_drawVLine(uint8_t x1, uint8_t y1, uint8_t y2);
380 
397 void ssd1306_drawBuffer(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf);
398 
402 #define ssd1306_drawCanvas(x, y, w, h, buf) ssd1306_drawBuffer(x, y, w, h, buf)
403 
413 void ssd1306_drawBitmap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf);
414 
424 void gfx_drawMonoBitmap(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *buf);
425 
434 void ssd1306_clearBlock(uint8_t x, uint8_t y, uint8_t w, uint8_t h);
435 
443 void ssd1306_drawSpriteEx(uint8_t x, uint8_t y, uint8_t w, const uint8_t *sprite);
444 
450 void ssd1306_drawSprite(SPRITE *sprite);
451 
456 void ssd1306_eraseSprite(SPRITE *sprite);
457 
462 void ssd1306_eraseTrace(SPRITE *sprite);
463 
472 SPRITE ssd1306_createSprite(uint8_t x, uint8_t y, uint8_t w, const uint8_t *data);
473 
480 void ssd1306_replaceSprite(SPRITE *sprite, const uint8_t *data);
481 
483 // HIGH-LEVEL GRAPH FUNCTIONS
485 
489 typedef struct
490 {
492  const char **items;
494  uint8_t count;
496  uint8_t selection;
498  uint8_t oldSelection;
500  uint8_t scrollPosition;
501 } SAppMenu;
502 
512 void ssd1306_createMenu(SAppMenu *menu, const char **items, uint8_t count);
513 
520 void ssd1306_showMenu(SAppMenu *menu);
521 
528 void ssd1306_updateMenu(SAppMenu *menu);
529 
536 uint8_t ssd1306_menuSelection(SAppMenu *menu);
537 
545 void ssd1306_menuDown(SAppMenu *menu);
546 
554 void ssd1306_menuUp(SAppMenu *menu);
555 
560 #ifdef __cplusplus
561 }
562 #endif
563 
564 #endif // _SSD1306_H_
void ssd1306_setFixedFont(const uint8_t *progmemFont)
void ssd1306_menuUp(SAppMenu *menu)
Definition: ssd1306_menu.c:124
unsigned int lcduint_t
Definition: io.h:42
uint8_t ssd1306_charF6x8_eol(uint8_t left, uint8_t y, const char ch[], EFontStyle style, uint8_t right) __attribute__((deprecated))
void ssd1306_eraseSprite(SPRITE *sprite)
void ssd1306_invertMode(void)
void ssd1306_drawRect(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2)
void ssd1306_drawSprite(SPRITE *sprite)
void ssd1306_flipVertical(uint8_t mode)
performs vertical flip
uint8_t ssd1306_charF6x8(uint8_t x, uint8_t y, const char ch[], EFontStyle style=STYLE_NORMAL) __attribute__((deprecated))
void ssd1306_putPixels(uint8_t x, uint8_t y, uint8_t pixels)
void ssd1306_fillScreen(uint8_t fill_Data)
uint8_t ssd1306_printFixed(uint8_t xpos, uint8_t y, const char *ch, EFontStyle style)
void ssd1306_menuDown(SAppMenu *menu)
Definition: ssd1306_menu.c:112
void ssd1306_clearBlock(uint8_t x, uint8_t y, uint8_t w, uint8_t h)
void ssd1306_displayOn(void)
void ssd1306_drawVLine(uint8_t x1, uint8_t y1, uint8_t y2)
uint8_t ssd1306_displayWidth(void)
uint8_t ssd1306_printFixedN(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style, uint8_t factor)
void ssd1306_flipHorizontal(uint8_t mode)
performs horizontal flip
void ssd1306_drawBitmap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf)
void ssd1306_putPixel(uint8_t x, uint8_t y)
uint8_t selection
currently selected item. Internally updated.
Definition: ssd1306.h:496
uint8_t scrollPosition
position of menu scrolling. Internally updated
Definition: ssd1306.h:500
void ssd1306_showMenu(SAppMenu *menu)
Definition: ssd1306_menu.c:77
uint8_t count
count of menu items in the menu
Definition: ssd1306.h:494
uint8_t ssd1306_menuSelection(SAppMenu *menu)
Definition: ssd1306_menu.c:107
int lcdint_t
Definition: io.h:40
void gfx_drawMonoBitmap(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *buf)
void ssd1306_clearScreen(void)
void ssd1306_setFont6x8(const uint8_t *progmemFont) __attribute__((deprecated))
void ssd1306_drawHLine(uint8_t x1, uint8_t y1, uint8_t x2)
void ssd1306_drawSpriteEx(uint8_t x, uint8_t y, uint8_t w, const uint8_t *sprite)
void ssd1306_positiveMode(void)
uint8_t ssd1306_charF12x16(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style) __attribute__((deprecated))
void ssd1306_updateMenu(SAppMenu *menu)
Definition: ssd1306_menu.c:88
uint8_t ssd1306_displayHeight(void)
void ssd1306_negativeMode(void)
void ssd1306_eraseTrace(SPRITE *sprite)
EFontStyle
void ssd1306_drawBuffer(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf)
uint8_t ssd1306_printFixed2x(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style) __attribute__((deprecated))
void ssd1306_replaceSprite(SPRITE *sprite, const uint8_t *data)
void ssd1306_normalMode(void)
void ssd1306_createMenu(SAppMenu *menu, const char **items, uint8_t count)
Definition: ssd1306_menu.c:41
uint8_t oldSelection
selected item, when last redraw operation was performed. Internally updated.
Definition: ssd1306.h:498
void ssd1306_displayOff(void)
void ssd1306_setContrast(uint8_t contrast)
SPRITE ssd1306_createSprite(uint8_t x, uint8_t y, uint8_t w, const uint8_t *data)
void ssd1306_drawLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2)
const char ** items
list of menu items of the menu
Definition: ssd1306.h:492
void ssd1306_setPos(uint8_t x, uint8_t y)