51#include "qwiic_grssd1306.h"
56#define kOLEDCustomDefaultWidth 128
57#define kOLEDCustomDefaultHeight 64
59#define kOLEDCustomDefaultXOffset 0
60#define kOLEDCustomDefaultYOffset 0
63#define kOLEDCustomDefaultPinConfig 0x12
64#define kOLEDCustomDefaultPreCharge 0xF1
65#define kOLEDCustomDefaultVCOM 0x40
66#define kOLEDCustomDefaultContrast 0xCF
68#define kOLEDCustomDefaultDefaultAddress 0x3D
69#define kOLEDCustomDefaultAltAddress 0x3C
71class QwOLEDCustom :
public QwGrSSD1306 {
76 : QwGrSSD1306(kOLEDCustomDefaultXOffset, kOLEDCustomDefaultYOffset, kOLEDCustomDefaultWidth, kOLEDCustomDefaultHeight)
78 default_address = kOLEDCustomDefaultDefaultAddress;
83 if (m_graphicsBuffer !=
nullptr)
85 delete[] m_graphicsBuffer;
86 m_graphicsBuffer =
nullptr;
93 this->QwGrSSD1306::setViewport(m_xOffset, m_yOffset, m_displayWidth, m_displayHeight);
95 this->QwGrSSD1306::setCommPins(m_pinConfig);
96 this->QwGrSSD1306::setPreCharge(m_preCharge);
97 this->QwGrSSD1306::setVcomDeselect(m_vcomDeselect);
98 this->QwGrSSD1306::setContrast(m_contrast);
100 if (m_graphicsBuffer !=
nullptr)
101 delete[] m_graphicsBuffer;
102 m_graphicsBuffer =
new uint8_t[(uint16_t)m_displayWidth * (uint16_t)m_displayHeight / 8];
103 this->QwGrSSD1306::setBuffer(m_graphicsBuffer);
106 return this->QwGrSSD1306::init();
109 void setXOffset(uint8_t xOffset){ m_xOffset = xOffset; }
110 void setYOffset(uint8_t yOffset){ m_yOffset = yOffset; }
111 void setDisplayWidth(uint8_t displayWidth){ m_displayWidth = displayWidth; }
112 void setDisplayHeight(uint8_t displayHeight){ m_displayHeight = displayHeight; }
113 void setPinConfig(uint8_t pinConfig){ m_pinConfig = pinConfig; }
114 void setPreCharge(uint8_t preCharge){ m_preCharge = preCharge; }
115 void setVcomDeselect(uint8_t vcomDeselect){ m_vcomDeselect = vcomDeselect; }
116 void setContrast(uint8_t contrast){ m_contrast = contrast; }
119 uint8_t m_xOffset = kOLEDCustomDefaultXOffset;
120 uint8_t m_yOffset = kOLEDCustomDefaultYOffset;
121 uint8_t m_displayWidth = kOLEDCustomDefaultWidth;
122 uint8_t m_displayHeight = kOLEDCustomDefaultHeight;
123 uint8_t m_pinConfig = kOLEDCustomDefaultPinConfig;
124 uint8_t m_preCharge = kOLEDCustomDefaultPreCharge;
125 uint8_t m_vcomDeselect = kOLEDCustomDefaultVCOM;
126 uint8_t m_contrast = kOLEDCustomDefaultContrast;
129 uint8_t *m_graphicsBuffer =
nullptr;