128x64 EasyC OLED Display 1.0.0
This is a library for Soldered OLED Display
Loading...
Searching...
No Matches
Adafruit_SSD1306.h
Go to the documentation of this file.
1
24#ifndef _Adafruit_SSD1306_H_
25#define _Adafruit_SSD1306_H_
26
27// ONE of the following three lines must be #defined:
28//#define SSD1306_128_64 ///< DEPRECTAED: old way to specify 128x64 screen
29#define SSD1306_128_32
30//#define SSD1306_96_16 ///< DEPRECATED: old way to specify 96x16 screen
31// This establishes the screen dimensions in old Adafruit_SSD1306 sketches
32// (NEW CODE SHOULD IGNORE THIS, USE THE CONSTRUCTORS THAT ACCEPT WIDTH
33// AND HEIGHT ARGUMENTS).
34
35#if defined(ARDUINO_STM32_FEATHER)
36typedef class HardwareSPI SPIClass;
37#endif
38
40#include <SPI.h>
41#include <Wire.h>
42
43#if defined(__AVR__)
44typedef volatile uint8_t PortReg;
45typedef uint8_t PortMask;
46#define HAVE_PORTREG
47#elif defined(__SAM3X8E__)
48typedef volatile RwReg PortReg;
49typedef uint32_t PortMask;
50#define HAVE_PORTREG
51#elif (defined(__arm__) || defined(ARDUINO_FEATHER52)) && !defined(ARDUINO_ARCH_MBED) && !defined(ARDUINO_ARCH_RP2040)
52typedef volatile uint32_t PortReg;
53typedef uint32_t PortMask;
54#define HAVE_PORTREG
55#endif
56
61#ifndef NO_ADAFRUIT_SSD1306_COLOR_COMPATIBILITY
62#define BLACK SSD1306_BLACK
63#define WHITE SSD1306_WHITE
64#define INVERSE SSD1306_INVERSE
65#endif
67#define SSD1306_BLACK 0
68#define SSD1306_WHITE 1
69#define SSD1306_INVERSE 2
70
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
91
92#define SSD1306_SETLOWCOLUMN 0x00
93#define SSD1306_SETHIGHCOLUMN 0x10
94#define SSD1306_SETSTARTLINE 0x40
95
96#define SSD1306_EXTERNALVCC 0x01
97#define SSD1306_SWITCHCAPVCC 0x02
98
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
106
107// Deprecated size stuff for backwards compatibility with old sketches
108#if defined SSD1306_128_64
109#define SSD1306_LCDWIDTH 128
110#define SSD1306_LCDHEIGHT 64
111#endif
112#if defined SSD1306_128_32
113#define SSD1306_LCDWIDTH 128
114#define SSD1306_LCDHEIGHT 32
115#endif
116#if defined SSD1306_96_16
117#define SSD1306_LCDWIDTH 96
118#define SSD1306_LCDHEIGHT 16
119#endif
120
126{
127 public:
128 // NEW CONSTRUCTORS -- recommended for new projects
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,
132 int8_t cs_pin);
133 Adafruit_SSD1306(uint8_t w, uint8_t h, SPIClass *spi, int8_t dc_pin, int8_t rst_pin, int8_t cs_pin,
134 uint32_t bitrate = 8000000UL);
135
136 // DEPRECATED CONSTRUCTORS - for back compatibility, avoid in new projects
137 Adafruit_SSD1306(int8_t mosi_pin, int8_t sclk_pin, int8_t dc_pin, int8_t rst_pin, int8_t cs_pin);
138 Adafruit_SSD1306(int8_t dc_pin, int8_t rst_pin, int8_t cs_pin);
139 Adafruit_SSD1306(int8_t rst_pin = -1);
140
141 ~Adafruit_SSD1306(void);
142
143 bool begin(uint8_t switchvcc = SSD1306_SWITCHCAPVCC, uint8_t i2caddr = 0, bool reset = true,
144 bool periphBegin = true);
145 void display(void);
146 void clearDisplay(void);
147 void invertDisplay(bool i);
148 void dim(bool dim);
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);
152 void startscrollright(uint8_t start, uint8_t stop);
153 void startscrollleft(uint8_t start, uint8_t stop);
154 void startscrolldiagright(uint8_t start, uint8_t stop);
155 void startscrolldiagleft(uint8_t start, uint8_t stop);
156 void stopscroll(void);
157 void ssd1306_command(uint8_t c);
158 bool getPixel(int16_t x, int16_t y);
159 uint8_t *getBuffer(void);
160
161 private:
162 inline void SPIwrite(uint8_t d) __attribute__((always_inline));
163 void drawFastHLineInternal(int16_t x, int16_t y, int16_t w, uint16_t color);
164 void drawFastVLineInternal(int16_t x, int16_t y, int16_t h, uint16_t color);
165 void ssd1306_command1(uint8_t c);
166 void ssd1306_commandList(const uint8_t *c, uint8_t n);
167
169 TwoWire *wire;
170 uint8_t *buffer;
173#ifdef HAVE_PORTREG
176#endif
177#if ARDUINO >= 157
178 uint32_t wireClk; // Wire speed for SSD1306 transfers
179 uint32_t restoreClk; // Wire speed following SSD1306 transfers
180#endif
181 uint8_t contrast; // normal contrast setting for this device
182#if defined(SPI_HAS_TRANSACTION)
183 protected:
184 // Allow sub-class to change
185 SPISettings spiSettings;
186#endif
187};
188
189#endif // _Adafruit_SSD1306_H_
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