52#include "qwiic_oled_1in3.h"
53#include "qwiic_oled_custom.h"
54#include "qwiic_oledmicro.h"
55#include "qwiic_olednarrow.h"
56#include "qwiic_oledtransp.h"
62typedef QwFont QwiicFont;
63typedef QwBitmap QwiicBitmap;
82#define kNoAddressSet 0
86template <
typename SSD1306DeviceType>
class QwiicOLEDBaseClass :
public Print
90 SSD1306DeviceType m_device;
117 bool begin(
TwoWire &wirePort = Wire, uint8_t address = kNoAddressSet)
122 setColor(COLOR_WHITE);
124 m_i2cBus.init(wirePort);
126 m_device.setCommBus(m_i2cBus, (address == kNoAddressSet ? m_device.default_address : address));
129 bool bStatus = m_device.init();
136 QwiicFont *pFont = m_device.font();
138 m_cursorY = pFont->height;
153 uint8_t getWidth(
void)
155 return m_device.width();
167 uint8_t getHeight(
void)
169 return m_device.height();
182 bool reset(
bool clearDisplay)
184 return m_device.reset(clearDisplay);
222 void invert(
bool bInvert)
224 m_device.invert(bInvert);
237 void flipVertical(
bool bFlip)
239 m_device.flipVert(bFlip);
252 void flipHorizontal(
bool bFlip)
254 m_device.flipHorz(bFlip);
263 void scrollStop(
void)
265 m_device.stopScroll();
295 void scrollRight(uint8_t start, uint8_t stop, uint8_t interval)
297 m_device.scroll(SCROLL_RIGHT, start, stop, interval);
314 void scrollVertRight(uint8_t start, uint8_t stop, uint8_t interval)
316 m_device.scroll(SCROLL_VERT_RIGHT, start, stop, interval);
333 void scrollLeft(uint8_t start, uint8_t stop, uint8_t interval)
335 m_device.scroll(SCROLL_LEFT, start, stop, interval);
352 void scrollVertLeft(uint8_t start, uint8_t stop, uint8_t interval)
354 m_device.scroll(SCROLL_VERT_LEFT, start, stop, interval);
368 void displayPower(
bool enable =
true)
371 m_device.displayPower(enable);
415 void setFont(QwiicFont &theFont)
417 m_device.setFont(theFont);
419 void setFont(
const QwiicFont *theFont)
421 m_device.setFont(theFont);
433 QwiicFont *getFont(
void)
435 return m_device.font();
443 String getFontName(
void)
445 QwiicFont *pFont = m_device.font();
450 return String(pFont->name);
462 unsigned int getStringWidth(String &text)
464 return getStringWidth(text.
c_str());
467 unsigned int getStringWidth(
const char *text)
470 uint16_t height, width;
472 return (m_device.getStringSize(text, width, height) ? width : 0);
485 unsigned int getStringHeight(String &text)
487 return getStringHeight(text.
c_str());
490 unsigned int getStringHeight(
const char *text)
493 uint16_t height, width;
495 return (m_device.getStringSize(text, width, height) ? height : 0);
519 void setDrawMode(grRasterOp_t rop)
521 m_device.setRasterOp(rop);
534 grRasterOp_t getDrawMode(
void)
536 return m_device.rasterOp();
553 void pixel(uint8_t x, uint8_t y, uint8_t clr = COLOR_WHITE)
555 m_device.pixel(x, y, clr);
574 void line(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t clr = COLOR_WHITE)
576 m_device.line(x0, y0, x1, y1, clr);
592 void rectangle(uint8_t x0, uint8_t y0, uint8_t width, uint8_t height, uint8_t clr = COLOR_WHITE)
594 m_device.rectangle(x0, y0, width, height, clr);
610 void rectangleFill(uint8_t x0, uint8_t y0, uint8_t width, uint8_t height, uint8_t clr = COLOR_WHITE)
612 m_device.rectangleFill(x0, y0, width, height, clr);
627 void circle(uint8_t x0, uint8_t y0, uint8_t radius, uint8_t clr = COLOR_WHITE)
629 m_device.circle(x0, y0, radius, clr);
644 void circleFill(uint8_t x0, uint8_t y0, uint8_t radius, uint8_t clr = COLOR_WHITE)
646 m_device.circleFill(x0, y0, radius, clr);
666 void bitmap(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t *pBitmap, uint8_t bmp_width, uint8_t bmp_height)
668 m_device.bitmap(x0, y0, x1, y1, pBitmap, bmp_width, bmp_height);
684 void bitmap(uint8_t x0, uint8_t y0, uint8_t *pBitmap, uint8_t bmp_width, uint8_t bmp_height)
687 m_device.bitmap(x0, y0, pBitmap, bmp_width, bmp_height);
700 void bitmap(uint8_t x0, uint8_t y0, QwiicBitmap &bitmap)
702 m_device.bitmap(x0, y0, bitmap);
717 void text(uint8_t x0, uint8_t y0,
const char *text, uint8_t clr = COLOR_WHITE)
719 m_device.text(x0, y0, text, clr);
722 void text(uint8_t x0, uint8_t y0, String &text, uint8_t clr = COLOR_WHITE)
725 m_device.text(x0, y0, text.
c_str(), clr);
744 void setCursor(uint8_t x, uint8_t y)
747 if (x < 0 || x >= m_device.width() || y < 0 || y >= m_device.height())
764 void setColor(uint8_t clr)
766 m_color = (clr > 0 ? COLOR_WHITE : COLOR_BLACK);
779 uint8_t getColor(
void)
790 virtual size_t write(uint8_t theChar)
792 QwiicFont *pFont = m_device.font();
801 m_cursorY += pFont->height;
806 char buffer[2] = {theChar,
'\0'};
807 m_device.text(m_cursorX, m_cursorY, buffer, m_color);
809 m_cursorX += pFont->width + 1;
811 if (m_cursorX > m_device.width() - pFont->width)
814 m_cursorY += pFont->height;
818 if (m_cursorY >= m_device.height())
828class QwiicMicroOLED :
public QwiicOLEDBaseClass<QwOLEDMicro>
833class QwiicNarrowOLED :
public QwiicOLEDBaseClass<QwOLEDNarrow>
838class QwiicTransparentOLED :
public QwiicOLEDBaseClass<QwOLEDTransparent>
843class Qwiic1in3OLED :
public QwiicOLEDBaseClass<QwOLED1in3>
848class QwiicCustomOLED :
public QwiicOLEDBaseClass<QwOLEDCustom>
851 void setXOffset(uint8_t xOffset)
853 m_device.setXOffset(xOffset);
855 void setYOffset(uint8_t yOffset)
857 m_device.setYOffset(yOffset);
859 void setDisplayWidth(uint8_t displayWidth)
861 m_device.setDisplayWidth(displayWidth);
863 void setDisplayHeight(uint8_t displayHeight)
865 m_device.setDisplayHeight(displayHeight);
867 void setPinConfig(uint8_t pinConfig)
869 m_device.setPinConfig(pinConfig);
871 void setPreCharge(uint8_t preCharge)
873 m_device.setPreCharge(preCharge);
875 void setVcomDeselect(uint8_t vcomDeselect)
877 m_device.setVcomDeselect(vcomDeselect);
879 void setContrast(uint8_t contrast)
881 m_device.setContrast(contrast);
const char * c_str() const
Method to pass a NBString as a constant char *.
Wire interface class.
Definition Wire.h:43