LCDGFX LCD display driver  1.1.5
This library is developed to control SSD1306/SSD1325/SSD1327/SSD1331/SSD1351/IL9163/PCD8554 RGB i2c/spi LED displays
lcd_ssd1306.h
Go to the documentation of this file.
1 /*
2  MIT License
3 
4  Copyright 2019-2022 (C) 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 */
24 /* !!! THIS FILE IS AUTO GENERATED !!! */
29 #pragma once
30 
31 #include "lcd_hal/io.h"
32 #include "v2/lcd/lcd_common.h"
33 #include "v2/lcd/base/display.h"
34 
43 template <typename I> class InterfaceSSD1306: public I
44 {
45 public:
53  template <typename... Args>
54  InterfaceSSD1306(NanoDisplayBase<InterfaceSSD1306<I>> &base, int8_t dc, Args &&... data)
55  : I(data...)
56  , m_dc(dc)
57  , m_base(base)
58  {
59  }
60 
77 
84  void nextBlock();
85 
89  void endBlock();
90 
95  void setDataMode(uint8_t mode);
96 
101  void commandStart();
102 
108  void setStartLine(uint8_t line);
109 
113  uint8_t getStartLine();
114 
119  void normalMode();
120 
125  void invertMode();
126 
131  void setContrast(uint8_t contrast);
132 
136  void displayOff();
137 
141  void displayOn();
142 
152  void flipHorizontal(uint8_t mode);
153 
163  void flipVertical(uint8_t mode);
164 
165 private:
166  int8_t m_dc = -1;
168  uint8_t m_startLine = 0;
169 };
173 template <typename I> class DisplaySSD1306: public NanoDisplayOps<NanoDisplayOps1<I>, I>
174 {
175 public:
182  DisplaySSD1306(I &intf, int8_t rstPin)
183  : NanoDisplayOps<NanoDisplayOps1<I>, I>(intf)
184  , m_rstPin(rstPin)
185  {
186  }
187 
188 protected:
189  int8_t m_rstPin;
190 
194  void beginDisplay();
195 
199  void endDisplay();
200 };
201 
205 template <typename I> class DisplaySSD1306_64x32: public DisplaySSD1306<I>
206 {
207 public:
214  DisplaySSD1306_64x32(I &intf, int8_t rstPin)
215  : DisplaySSD1306<I>(intf, rstPin)
216  {
217  }
218 
219 protected:
223  void beginController();
224 
228  void endController();
229 };
230 #ifdef CONFIG_LCDGFX_PLATFORM_SPI
231 
234 class DisplaySSD1306_64x32_SPI: public DisplaySSD1306_64x32<InterfaceSSD1306<PlatformSpi>>
235 {
236 public:
244  explicit DisplaySSD1306_64x32_SPI(int8_t rstPin, const SPlatformSpiConfig &config = {-1, {-1}, -1, 0U, -1, -1})
245  : DisplaySSD1306_64x32(m_spi, rstPin)
246  , m_spi(*this, config.dc,
248  config.busId, {config.cs}, config.dc, config.frequency ?: static_cast<uint32_t>(10000000), config.scl, config.sda})
249  {
250  }
251 
255  void begin() override;
256 
260  void end() override;
261 
262 private:
264 };
265 #endif
266 
271 template <typename I> class DisplaySSD1306_64x32_CustomSPI: public DisplaySSD1306_64x32<InterfaceSSD1306<I>>
272 {
273 public:
282  template <typename... Args>
283  DisplaySSD1306_64x32_CustomSPI(int8_t rstPin, int8_t dcPin, Args &&... data)
284  : DisplaySSD1306_64x32<InterfaceSSD1306<I>>(m_spi, rstPin)
285  , m_spi(*this, dcPin, data...)
286  {
287  }
288 
292  void begin() override
293  {
294  m_spi.begin();
295  DisplaySSD1306_64x32<InterfaceSSD1306<I>>::beginController();
296  }
297 
301  void end() override
302  {
304  m_spi.end();
305  }
306 
307 private:
308  InterfaceSSD1306<I> m_spi;
309 };
310 #ifdef CONFIG_LCDGFX_PLATFORM_I2C
311 
314 class DisplaySSD1306_64x32_I2C: public DisplaySSD1306_64x32<InterfaceSSD1306<PlatformI2c>>
315 {
316 public:
324  explicit DisplaySSD1306_64x32_I2C(int8_t rstPin, const SPlatformI2cConfig &config = {-1, 0x3C, -1, -1, 0U})
325  : DisplaySSD1306_64x32(m_i2c, rstPin)
326  , m_i2c(*this, -1,
327  SPlatformI2cConfig{config.busId, static_cast<uint8_t>(config.addr ?: 0x3C), config.scl, config.sda,
328  config.frequency ?: 400000U})
329  {
330  }
331 
335  void begin() override;
336 
340  void end() override;
341 
342 private:
344 };
345 #endif
346 
351 template <typename I> class DisplaySSD1306_64x32_CustomI2C: public DisplaySSD1306_64x32<InterfaceSSD1306<I>>
352 {
353 public:
361  template <typename... Args>
362  DisplaySSD1306_64x32_CustomI2C(int8_t rstPin, Args &&... data)
363  : DisplaySSD1306_64x32<InterfaceSSD1306<I>>(m_i2c, rstPin)
364  , m_i2c(*this, -1, data...)
365  {
366  }
367 
371  void begin() override
372  {
373  m_i2c.begin();
374  DisplaySSD1306_64x32<InterfaceSSD1306<I>>::beginController();
375  }
376 
380  void end() override
381  {
383  m_i2c.end();
384  }
385 
386 private:
387  InterfaceSSD1306<I> m_i2c;
388 };
394 template <typename I> class DisplaySSD1306_64x32_Custom: public DisplaySSD1306_64x32<InterfaceSSD1306<I>>
395 {
396 public:
409  template <typename... Args>
410  DisplaySSD1306_64x32_Custom(int8_t rstPin, int8_t dcPin, uint32_t frequency, Args &&... data)
411  : DisplaySSD1306_64x32<InterfaceSSD1306<I>>(m_custom, rstPin)
412  , m_custom(*this, dcPin, frequency = frequency ? frequency : 3000000, data...)
413  {
414  }
415 
419  void begin() override
420  {
421  m_custom.begin();
422  DisplaySSD1306_64x32<InterfaceSSD1306<I>>::beginController();
423  }
424 
428  void end() override
429  {
431  m_custom.end();
432  }
433 
434 private:
435  InterfaceSSD1306<I> m_custom;
436 };
440 template <typename I> class DisplaySSD1306_64x48: public DisplaySSD1306<I>
441 {
442 public:
449  DisplaySSD1306_64x48(I &intf, int8_t rstPin)
450  : DisplaySSD1306<I>(intf, rstPin)
451  {
452  }
453 
454 protected:
458  void beginController();
459 
463  void endController();
464 };
465 #ifdef CONFIG_LCDGFX_PLATFORM_SPI
466 
469 class DisplaySSD1306_64x48_SPI: public DisplaySSD1306_64x48<InterfaceSSD1306<PlatformSpi>>
470 {
471 public:
479  explicit DisplaySSD1306_64x48_SPI(int8_t rstPin, const SPlatformSpiConfig &config = {-1, {-1}, -1, 0U, -1, -1})
480  : DisplaySSD1306_64x48(m_spi, rstPin)
481  , m_spi(*this, config.dc,
483  config.busId, {config.cs}, config.dc, config.frequency ?: static_cast<uint32_t>(10000000), config.scl, config.sda})
484  {
485  }
486 
490  void begin() override;
491 
495  void end() override;
496 
497 private:
499 };
500 #endif
501 
506 template <typename I> class DisplaySSD1306_64x48_CustomSPI: public DisplaySSD1306_64x48<InterfaceSSD1306<I>>
507 {
508 public:
517  template <typename... Args>
518  DisplaySSD1306_64x48_CustomSPI(int8_t rstPin, int8_t dcPin, Args &&... data)
519  : DisplaySSD1306_64x48<InterfaceSSD1306<I>>(m_spi, rstPin)
520  , m_spi(*this, dcPin, data...)
521  {
522  }
523 
527  void begin() override
528  {
529  m_spi.begin();
530  DisplaySSD1306_64x48<InterfaceSSD1306<I>>::beginController();
531  }
532 
536  void end() override
537  {
539  m_spi.end();
540  }
541 
542 private:
543  InterfaceSSD1306<I> m_spi;
544 };
545 #ifdef CONFIG_LCDGFX_PLATFORM_I2C
546 
549 class DisplaySSD1306_64x48_I2C: public DisplaySSD1306_64x48<InterfaceSSD1306<PlatformI2c>>
550 {
551 public:
559  explicit DisplaySSD1306_64x48_I2C(int8_t rstPin, const SPlatformI2cConfig &config = {-1, 0x3C, -1, -1, 0U})
560  : DisplaySSD1306_64x48(m_i2c, rstPin)
561  , m_i2c(*this, -1,
562  SPlatformI2cConfig{config.busId, static_cast<uint8_t>(config.addr ?: 0x3C), config.scl, config.sda,
563  config.frequency ?: 400000U})
564  {
565  }
566 
570  void begin() override;
571 
575  void end() override;
576 
577 private:
579 };
580 #endif
581 
586 template <typename I> class DisplaySSD1306_64x48_CustomI2C: public DisplaySSD1306_64x48<InterfaceSSD1306<I>>
587 {
588 public:
596  template <typename... Args>
597  DisplaySSD1306_64x48_CustomI2C(int8_t rstPin, Args &&... data)
598  : DisplaySSD1306_64x48<InterfaceSSD1306<I>>(m_i2c, rstPin)
599  , m_i2c(*this, -1, data...)
600  {
601  }
602 
606  void begin() override
607  {
608  m_i2c.begin();
609  DisplaySSD1306_64x48<InterfaceSSD1306<I>>::beginController();
610  }
611 
615  void end() override
616  {
618  m_i2c.end();
619  }
620 
621 private:
622  InterfaceSSD1306<I> m_i2c;
623 };
629 template <typename I> class DisplaySSD1306_64x48_Custom: public DisplaySSD1306_64x48<InterfaceSSD1306<I>>
630 {
631 public:
644  template <typename... Args>
645  DisplaySSD1306_64x48_Custom(int8_t rstPin, int8_t dcPin, uint32_t frequency, Args &&... data)
646  : DisplaySSD1306_64x48<InterfaceSSD1306<I>>(m_custom, rstPin)
647  , m_custom(*this, dcPin, frequency = frequency ? frequency : 3000000, data...)
648  {
649  }
650 
654  void begin() override
655  {
656  m_custom.begin();
657  DisplaySSD1306_64x48<InterfaceSSD1306<I>>::beginController();
658  }
659 
663  void end() override
664  {
666  m_custom.end();
667  }
668 
669 private:
670  InterfaceSSD1306<I> m_custom;
671 };
675 template <typename I> class DisplaySSD1306_128x32: public DisplaySSD1306<I>
676 {
677 public:
684  DisplaySSD1306_128x32(I &intf, int8_t rstPin)
685  : DisplaySSD1306<I>(intf, rstPin)
686  {
687  }
688 
689 protected:
693  void beginController();
694 
698  void endController();
699 };
700 #ifdef CONFIG_LCDGFX_PLATFORM_SPI
701 
704 class DisplaySSD1306_128x32_SPI: public DisplaySSD1306_128x32<InterfaceSSD1306<PlatformSpi>>
705 {
706 public:
714  explicit DisplaySSD1306_128x32_SPI(int8_t rstPin, const SPlatformSpiConfig &config = {-1, {-1}, -1, 0U, -1, -1})
715  : DisplaySSD1306_128x32(m_spi, rstPin)
716  , m_spi(*this, config.dc,
718  config.busId, {config.cs}, config.dc, config.frequency ?: static_cast<uint32_t>(10000000), config.scl, config.sda})
719  {
720  }
721 
725  void begin() override;
726 
730  void end() override;
731 
732 private:
734 };
735 #endif
736 
741 template <typename I> class DisplaySSD1306_128x32_CustomSPI: public DisplaySSD1306_128x32<InterfaceSSD1306<I>>
742 {
743 public:
752  template <typename... Args>
753  DisplaySSD1306_128x32_CustomSPI(int8_t rstPin, int8_t dcPin, Args &&... data)
754  : DisplaySSD1306_128x32<InterfaceSSD1306<I>>(m_spi, rstPin)
755  , m_spi(*this, dcPin, data...)
756  {
757  }
758 
762  void begin() override
763  {
764  m_spi.begin();
765  DisplaySSD1306_128x32<InterfaceSSD1306<I>>::beginController();
766  }
767 
771  void end() override
772  {
774  m_spi.end();
775  }
776 
777 private:
778  InterfaceSSD1306<I> m_spi;
779 };
780 #ifdef CONFIG_LCDGFX_PLATFORM_I2C
781 
784 class DisplaySSD1306_128x32_I2C: public DisplaySSD1306_128x32<InterfaceSSD1306<PlatformI2c>>
785 {
786 public:
794  explicit DisplaySSD1306_128x32_I2C(int8_t rstPin, const SPlatformI2cConfig &config = {-1, 0x3C, -1, -1, 0U})
795  : DisplaySSD1306_128x32(m_i2c, rstPin)
796  , m_i2c(*this, -1,
797  SPlatformI2cConfig{config.busId, static_cast<uint8_t>(config.addr ?: 0x3C), config.scl, config.sda,
798  config.frequency ?: 400000U})
799  {
800  }
801 
805  void begin() override;
806 
810  void end() override;
811 
812 private:
814 };
815 #endif
816 
821 template <typename I> class DisplaySSD1306_128x32_CustomI2C: public DisplaySSD1306_128x32<InterfaceSSD1306<I>>
822 {
823 public:
831  template <typename... Args>
832  DisplaySSD1306_128x32_CustomI2C(int8_t rstPin, Args &&... data)
833  : DisplaySSD1306_128x32<InterfaceSSD1306<I>>(m_i2c, rstPin)
834  , m_i2c(*this, -1, data...)
835  {
836  }
837 
841  void begin() override
842  {
843  m_i2c.begin();
844  DisplaySSD1306_128x32<InterfaceSSD1306<I>>::beginController();
845  }
846 
850  void end() override
851  {
853  m_i2c.end();
854  }
855 
856 private:
857  InterfaceSSD1306<I> m_i2c;
858 };
864 template <typename I> class DisplaySSD1306_128x32_Custom: public DisplaySSD1306_128x32<InterfaceSSD1306<I>>
865 {
866 public:
879  template <typename... Args>
880  DisplaySSD1306_128x32_Custom(int8_t rstPin, int8_t dcPin, uint32_t frequency, Args &&... data)
881  : DisplaySSD1306_128x32<InterfaceSSD1306<I>>(m_custom, rstPin)
882  , m_custom(*this, dcPin, frequency = frequency ? frequency : 3000000, data...)
883  {
884  }
885 
889  void begin() override
890  {
891  m_custom.begin();
892  DisplaySSD1306_128x32<InterfaceSSD1306<I>>::beginController();
893  }
894 
898  void end() override
899  {
901  m_custom.end();
902  }
903 
904 private:
905  InterfaceSSD1306<I> m_custom;
906 };
910 template <typename I> class DisplaySSD1306_128x64: public DisplaySSD1306<I>
911 {
912 public:
919  DisplaySSD1306_128x64(I &intf, int8_t rstPin)
920  : DisplaySSD1306<I>(intf, rstPin)
921  {
922  }
923 
924 protected:
928  void beginController();
929 
933  void endController();
934 };
935 #ifdef CONFIG_LCDGFX_PLATFORM_SPI
936 
939 class DisplaySSD1306_128x64_SPI: public DisplaySSD1306_128x64<InterfaceSSD1306<PlatformSpi>>
940 {
941 public:
949  explicit DisplaySSD1306_128x64_SPI(int8_t rstPin, const SPlatformSpiConfig &config = {-1, {-1}, -1, 0U, -1, -1})
950  : DisplaySSD1306_128x64(m_spi, rstPin)
951  , m_spi(*this, config.dc,
953  config.busId, {config.cs}, config.dc, config.frequency ?: static_cast<uint32_t>(10000000), config.scl, config.sda})
954  {
955  }
956 
960  void begin() override;
961 
965  void end() override;
966 
967 private:
969 };
970 #endif
971 
976 template <typename I> class DisplaySSD1306_128x64_CustomSPI: public DisplaySSD1306_128x64<InterfaceSSD1306<I>>
977 {
978 public:
987  template <typename... Args>
988  DisplaySSD1306_128x64_CustomSPI(int8_t rstPin, int8_t dcPin, Args &&... data)
989  : DisplaySSD1306_128x64<InterfaceSSD1306<I>>(m_spi, rstPin)
990  , m_spi(*this, dcPin, data...)
991  {
992  }
993 
997  void begin() override
998  {
999  m_spi.begin();
1000  DisplaySSD1306_128x64<InterfaceSSD1306<I>>::beginController();
1001  }
1002 
1006  void end() override
1007  {
1009  m_spi.end();
1010  }
1011 
1012 private:
1013  InterfaceSSD1306<I> m_spi;
1014 };
1015 #ifdef CONFIG_LCDGFX_PLATFORM_I2C
1016 
1019 class DisplaySSD1306_128x64_I2C: public DisplaySSD1306_128x64<InterfaceSSD1306<PlatformI2c>>
1020 {
1021 public:
1029  explicit DisplaySSD1306_128x64_I2C(int8_t rstPin, const SPlatformI2cConfig &config = {-1, 0x3C, -1, -1, 0U})
1030  : DisplaySSD1306_128x64(m_i2c, rstPin)
1031  , m_i2c(*this, -1,
1032  SPlatformI2cConfig{config.busId, static_cast<uint8_t>(config.addr ?: 0x3C), config.scl, config.sda,
1033  config.frequency ?: 400000U})
1034  {
1035  }
1036 
1040  void begin() override;
1041 
1045  void end() override;
1046 
1047 private:
1049 };
1050 #endif
1051 
1056 template <typename I> class DisplaySSD1306_128x64_CustomI2C: public DisplaySSD1306_128x64<InterfaceSSD1306<I>>
1057 {
1058 public:
1066  template <typename... Args>
1067  DisplaySSD1306_128x64_CustomI2C(int8_t rstPin, Args &&... data)
1068  : DisplaySSD1306_128x64<InterfaceSSD1306<I>>(m_i2c, rstPin)
1069  , m_i2c(*this, -1, data...)
1070  {
1071  }
1072 
1076  void begin() override
1077  {
1078  m_i2c.begin();
1079  DisplaySSD1306_128x64<InterfaceSSD1306<I>>::beginController();
1080  }
1081 
1085  void end() override
1086  {
1088  m_i2c.end();
1089  }
1090 
1091 private:
1092  InterfaceSSD1306<I> m_i2c;
1093 };
1099 template <typename I> class DisplaySSD1306_128x64_Custom: public DisplaySSD1306_128x64<InterfaceSSD1306<I>>
1100 {
1101 public:
1114  template <typename... Args>
1115  DisplaySSD1306_128x64_Custom(int8_t rstPin, int8_t dcPin, uint32_t frequency, Args &&... data)
1116  : DisplaySSD1306_128x64<InterfaceSSD1306<I>>(m_custom, rstPin)
1117  , m_custom(*this, dcPin, frequency = frequency ? frequency : 3000000, data...)
1118  {
1119  }
1120 
1124  void begin() override
1125  {
1126  m_custom.begin();
1127  DisplaySSD1306_128x64<InterfaceSSD1306<I>>::beginController();
1128  }
1129 
1133  void end() override
1134  {
1136  m_custom.end();
1137  }
1138 
1139 private:
1140  InterfaceSSD1306<I> m_custom;
1141 };
1142 #include "lcd_ssd1306.inl"
1143 
DisplaySSD1306_64x32_CustomSPI(int8_t rstPin, int8_t dcPin, Args &&... data)
Inits 64x32 lcd display over spi (based on SSD1306 controller): 1-bit mode.
Definition: lcd_ssd1306.h:283
DisplaySSD1306_128x32_Custom(int8_t rstPin, int8_t dcPin, uint32_t frequency, Args &&... data)
Inits 128x32 lcd display over custom interface (based on SSD1306 controller): 1-bit mode...
Definition: lcd_ssd1306.h:880
void setStartLine(uint8_t line)
Definition: lcd_ssd1306.inl:83
uint8_t lcduint_t
Definition: canvas_types.h:79
DisplaySSD1306_64x48_CustomSPI(int8_t rstPin, int8_t dcPin, Args &&... data)
Inits 64x48 lcd display over spi (based on SSD1306 controller): 1-bit mode.
Definition: lcd_ssd1306.h:518
DisplaySSD1306_128x64(I &intf, int8_t rstPin)
Definition: lcd_ssd1306.h:919
DisplaySSD1306_128x64_CustomSPI(int8_t rstPin, int8_t dcPin, Args &&... data)
Inits 128x64 lcd display over spi (based on SSD1306 controller): 1-bit mode.
Definition: lcd_ssd1306.h:988
void flipVertical(uint8_t mode)
performs vertical flip
DisplaySSD1306(I &intf, int8_t rstPin)
Definition: lcd_ssd1306.h:182
DisplaySSD1306_64x48_Custom(int8_t rstPin, int8_t dcPin, uint32_t frequency, Args &&... data)
Inits 64x48 lcd display over custom interface (based on SSD1306 controller): 1-bit mode...
Definition: lcd_ssd1306.h:645
DisplaySSD1306_64x48_CustomI2C(int8_t rstPin, Args &&... data)
Inits 64x48 lcd display over i2c (based on SSD1306 controller): 1-bit mode.
Definition: lcd_ssd1306.h:597
DisplaySSD1306_128x64_Custom(int8_t rstPin, int8_t dcPin, uint32_t frequency, Args &&... data)
Inits 128x64 lcd display over custom interface (based on SSD1306 controller): 1-bit mode...
Definition: lcd_ssd1306.h:1115
DisplaySSD1306_64x32_CustomI2C(int8_t rstPin, Args &&... data)
Inits 64x32 lcd display over i2c (based on SSD1306 controller): 1-bit mode.
Definition: lcd_ssd1306.h:362
DisplaySSD1306_128x32_CustomSPI(int8_t rstPin, int8_t dcPin, Args &&... data)
Inits 128x32 lcd display over spi (based on SSD1306 controller): 1-bit mode.
Definition: lcd_ssd1306.h:753
uint8_t getStartLine()
Definition: lcd_ssd1306.inl:91
InterfaceSSD1306(NanoDisplayBase< InterfaceSSD1306< I >> &base, int8_t dc, Args &&... data)
Definition: lcd_ssd1306.h:54
int8_t m_rstPin
indicates hardware reset pin used, -1 if it is not required
Definition: lcd_ssd1306.h:189
void startBlock(lcduint_t x, lcduint_t y, lcduint_t w)
Sets block in RAM of lcd display controller to write data to.
Definition: lcd_ssd1306.inl:35
DisplaySSD1306_64x48(I &intf, int8_t rstPin)
Definition: lcd_ssd1306.h:449
void flipHorizontal(uint8_t mode)
performs horizontal flip
DisplaySSD1306_64x32(I &intf, int8_t rstPin)
Definition: lcd_ssd1306.h:214
DisplaySSD1306_128x32_CustomI2C(int8_t rstPin, Args &&... data)
Inits 128x32 lcd display over i2c (based on SSD1306 controller): 1-bit mode.
Definition: lcd_ssd1306.h:832
void setDataMode(uint8_t mode)
Definition: lcd_ssd1306.inl:66
DisplaySSD1306_128x64_CustomI2C(int8_t rstPin, Args &&... data)
Inits 128x64 lcd display over i2c (based on SSD1306 controller): 1-bit mode.
Definition: lcd_ssd1306.h:1067
void setContrast(uint8_t contrast)
DisplaySSD1306_128x32(I &intf, int8_t rstPin)
Definition: lcd_ssd1306.h:684
DisplaySSD1306_64x32_Custom(int8_t rstPin, int8_t dcPin, uint32_t frequency, Args &&... data)
Inits 64x32 lcd display over custom interface (based on SSD1306 controller): 1-bit mode...
Definition: lcd_ssd1306.h:410