24#ifndef _Adafruit_SSD1306_H_
25#define _Adafruit_SSD1306_H_
35#if defined(ARDUINO_STM32_FEATHER)
47#elif defined(__SAM3X8E__)
51#elif (defined(__arm__) || defined(ARDUINO_FEATHER52)) && !defined(ARDUINO_ARCH_MBED) && !defined(ARDUINO_ARCH_RP2040)
52typedef volatile uint32_t
PortReg;
61#ifndef NO_ADAFRUIT_SSD1306_COLOR_COMPATIBILITY
62#define BLACK SSD1306_BLACK
63#define WHITE SSD1306_WHITE
64#define INVERSE SSD1306_INVERSE
67#define SSD1306_BLACK 0
68#define SSD1306_WHITE 1
69#define SSD1306_INVERSE 2
71#define SSD1306_MEMORYMODE 0x20
72#define SSD1306_COLUMNADDR 0x21
73#define SSD1306_PAGEADDR 0x22
74#define SSD1306_SETCONTRAST 0x81
75#define SSD1306_CHARGEPUMP 0x8D
76#define SSD1306_SEGREMAP 0xA0
77#define SSD1306_DISPLAYALLON_RESUME 0xA4
78#define SSD1306_DISPLAYALLON 0xA5
79#define SSD1306_NORMALDISPLAY 0xA6
80#define SSD1306_INVERTDISPLAY 0xA7
81#define SSD1306_SETMULTIPLEX 0xA8
82#define SSD1306_DISPLAYOFF 0xAE
83#define SSD1306_DISPLAYON 0xAF
84#define SSD1306_COMSCANINC 0xC0
85#define SSD1306_COMSCANDEC 0xC8
86#define SSD1306_SETDISPLAYOFFSET 0xD3
87#define SSD1306_SETDISPLAYCLOCKDIV 0xD5
88#define SSD1306_SETPRECHARGE 0xD9
89#define SSD1306_SETCOMPINS 0xDA
90#define SSD1306_SETVCOMDETECT 0xDB
92#define SSD1306_SETLOWCOLUMN 0x00
93#define SSD1306_SETHIGHCOLUMN 0x10
94#define SSD1306_SETSTARTLINE 0x40
96#define SSD1306_EXTERNALVCC 0x01
97#define SSD1306_SWITCHCAPVCC 0x02
99#define SSD1306_RIGHT_HORIZONTAL_SCROLL 0x26
100#define SSD1306_LEFT_HORIZONTAL_SCROLL 0x27
101#define SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29
102#define SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL 0x2A
103#define SSD1306_DEACTIVATE_SCROLL 0x2E
104#define SSD1306_ACTIVATE_SCROLL 0x2F
105#define SSD1306_SET_VERTICAL_SCROLL_AREA 0xA3
108#if defined SSD1306_128_64
109#define SSD1306_LCDWIDTH 128
110#define SSD1306_LCDHEIGHT 64
112#if defined SSD1306_128_32
113#define SSD1306_LCDWIDTH 128
114#define SSD1306_LCDHEIGHT 32
116#if defined SSD1306_96_16
117#define SSD1306_LCDWIDTH 96
118#define SSD1306_LCDHEIGHT 16
129 Adafruit_SSD1306(uint8_t w, uint8_t h, TwoWire *twi = &Wire, int8_t rst_pin = -1, uint32_t clkDuring = 400000UL,
130 uint32_t clkAfter = 100000UL);
131 Adafruit_SSD1306(uint8_t w, uint8_t h, int8_t mosi_pin, int8_t sclk_pin, int8_t dc_pin, int8_t rst_pin,
134 uint32_t bitrate = 8000000UL);
137 Adafruit_SSD1306(int8_t mosi_pin, int8_t sclk_pin, int8_t dc_pin, int8_t rst_pin, int8_t cs_pin);
143 bool begin(uint8_t switchvcc = SSD1306_SWITCHCAPVCC, uint8_t
i2caddr = 0,
bool reset =
true,
144 bool periphBegin =
true);
149 void drawPixel(int16_t x, int16_t y, uint16_t color);
150 virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color);
151 virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
158 bool getPixel(int16_t x, int16_t y);
162 inline void SPIwrite(uint8_t d) __attribute__((always_inline));
182#if defined(SPI_HAS_TRANSACTION)
class HardwareSPI SPIClass
SPI is a bit odd on WICED.
Definition Adafruit_SPITFT.h:34
uint8_t PortMask
Definition Adafruit_SSD1306.h:45
volatile uint8_t PortReg
Definition Adafruit_SSD1306.h:44
Definition Adafruit_GFX.h:15
Class that stores state and functions for interacting with SSD1306 OLED displays.
Definition Adafruit_SSD1306.h:126
int8_t i2caddr
Definition Adafruit_SSD1306.h:171
void ssd1306_command1(uint8_t c)
Definition Adafruit_SSD1306.cpp:384
uint8_t * buffer
Definition Adafruit_SSD1306.h:170
void display(void)
Push data currently in RAM to SSD1306 display.
Definition Adafruit_SSD1306.cpp:991
Adafruit_SSD1306(uint8_t w, uint8_t h, int8_t mosi_pin, int8_t sclk_pin, int8_t dc_pin, int8_t rst_pin, int8_t cs_pin)
virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color)
Draw a vertical line. This is also invoked by the Adafruit_GFX library in generating many higher-leve...
Definition Adafruit_SSD1306.cpp:794
uint8_t * getBuffer(void)
Get base address of display buffer for direct reading or writing.
Definition Adafruit_SSD1306.cpp:977
PortReg * mosiPort
Definition Adafruit_SSD1306.h:174
void dim(bool dim)
Dim the display.
Definition Adafruit_SSD1306.cpp:1180
SPIClass * spi
Definition Adafruit_SSD1306.h:168
PortReg * clkPort
Definition Adafruit_SSD1306.h:174
int8_t dcPin
Definition Adafruit_SSD1306.h:172
void invertDisplay(bool i)
Enable or disable display invert mode (white-on-black vs black-on-white).
Definition Adafruit_SSD1306.cpp:1165
PortMask csPinMask
Definition Adafruit_SSD1306.h:175
uint32_t wireClk
Definition Adafruit_SSD1306.h:178
PortReg * csPort
Definition Adafruit_SSD1306.h:174
void startscrollleft(uint8_t start, uint8_t stop)
Activate a left-handed scroll for all or part of the display.
Definition Adafruit_SSD1306.cpp:1076
PortMask dcPinMask
Definition Adafruit_SSD1306.h:175
~Adafruit_SSD1306(void)
Destructor for Adafruit_SSD1306 object.
Definition Adafruit_SSD1306.cpp:341
uint32_t restoreClk
Definition Adafruit_SSD1306.h:179
PortMask mosiPinMask
Definition Adafruit_SSD1306.h:175
Adafruit_SSD1306(uint8_t w, uint8_t h, TwoWire *twi=&Wire, int8_t rst_pin=-1, uint32_t clkDuring=400000UL, uint32_t clkAfter=100000UL)
Constructor for I2C-interfaced SSD1306 displays.
Definition Adafruit_SSD1306.cpp:175
void startscrollright(uint8_t start, uint8_t stop)
Activate a right-handed scroll for all or part of the display.
Definition Adafruit_SSD1306.cpp:1054
int8_t rstPin
Definition Adafruit_SSD1306.h:172
int8_t mosiPin
Definition Adafruit_SSD1306.h:172
PortReg * dcPort
Definition Adafruit_SSD1306.h:174
int8_t csPin
Definition Adafruit_SSD1306.h:172
void ssd1306_commandList(const uint8_t *c, uint8_t n)
Definition Adafruit_SSD1306.cpp:402
virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color)
Draw a horizontal line. This is also invoked by the Adafruit_GFX library in generating many higher-le...
Definition Adafruit_SSD1306.cpp:702
bool getPixel(int16_t x, int16_t y)
Return color of a single pixel in display buffer.
Definition Adafruit_SSD1306.cpp:947
void startscrolldiagleft(uint8_t start, uint8_t stop)
Activate alternate diagonal scroll for all or part of the display.
Definition Adafruit_SSD1306.cpp:1123
void drawFastVLineInternal(int16_t x, int16_t y, int16_t h, uint16_t color)
Definition Adafruit_SSD1306.cpp:827
void ssd1306_command(uint8_t c)
Issue a single low-level command directly to the SSD1306 display, bypassing the library.
Definition Adafruit_SSD1306.cpp:441
bool begin(uint8_t switchvcc=SSD1306_SWITCHCAPVCC, uint8_t i2caddr=0, bool reset=true, bool periphBegin=true)
Allocate RAM for image buffer, initialize peripherals and pins.
Definition Adafruit_SSD1306.cpp:485
void stopscroll(void)
Cease a previously-begun scrolling action.
Definition Adafruit_SSD1306.cpp:1143
void drawFastHLineInternal(int16_t x, int16_t y, int16_t w, uint16_t color)
Definition Adafruit_SSD1306.cpp:735
int8_t page_end
Definition Adafruit_SSD1306.h:171
int8_t clkPin
Definition Adafruit_SSD1306.h:172
TwoWire * wire
Definition Adafruit_SSD1306.h:169
PortMask clkPinMask
Definition Adafruit_SSD1306.h:175
void startscrolldiagright(uint8_t start, uint8_t stop)
Activate a diagonal scroll for all or part of the display.
Definition Adafruit_SSD1306.cpp:1098
int8_t vccstate
Definition Adafruit_SSD1306.h:171
SPISettings spiSettings
Definition Adafruit_SSD1306.h:185
void drawPixel(int16_t x, int16_t y, uint16_t color)
Set/clear/invert a single pixel. This is also invoked by the Adafruit_GFX library in generating many ...
Definition Adafruit_SSD1306.cpp:639
uint8_t contrast
Definition Adafruit_SSD1306.h:181
void SPIwrite(uint8_t d) __attribute__((always_inline))
Definition Adafruit_SSD1306.cpp:354
void clearDisplay(void)
Clear contents of display buffer (set all pixels to off).
Definition Adafruit_SSD1306.cpp:681