/* * SSD1306_oled.h * * Created on: Apr 5, 2021 * Author: bartool */ #ifndef INC_SSD1306_OLED_H_ #define INC_SSD1306_OLED_H_ #define SSD1306_128_64 ///< DEPRECTAED: old way to specify 128x64 screen //#define SSD1306_128_32 ///< DEPRECATED: old way to specify 128x32 screen //#define SSD1306_96_16 ///< DEPRECATED: old way to specify 96x16 screen #if defined SSD1306_128_64 #define SSD1306_LCDWIDTH 128 ///< DEPRECATED: width w/SSD1306_128_64 defined #define SSD1306_LCDHEIGHT 64 ///< DEPRECATED: height w/SSD1306_128_64 defined #endif #if defined SSD1306_128_32 #define SSD1306_LCDWIDTH 128 ///< DEPRECATED: width w/SSD1306_128_32 defined #define SSD1306_LCDHEIGHT 32 ///< DEPRECATED: height w/SSD1306_128_32 defined #endif #if defined SSD1306_96_16 #define SSD1306_LCDWIDTH 96 ///< DEPRECATED: width w/SSD1306_96_16 defined #define SSD1306_LCDHEIGHT 16 ///< DEPRECATED: height w/SSD1306_96_16 defined #endif #define SSD1306_BUF_SIZE SSD1306_LCDHEIGHT * SSD1306_LCDWIDTH / 8 #define BLACK SSD1306_BLACK ///< Draw 'off' pixels #define WHITE SSD1306_WHITE ///< Draw 'on' pixels #define NORMAL SSD1306_NORMAL #define INVERSE SSD1306_INVERSE ///< Invert pixels #define SSD1306_ADDRESS 0x3C #define SSD1306_TIMEOUT 100 #define SSD1306_BLACK 0 ///< Draw 'off' pixels #define SSD1306_WHITE 1 ///< Draw 'on' pixels #define SSD1306_NORMAL 2 #define SSD1306_INVERSE 3 ///< Invert pixels #define SSD1306_MEMORYMODE 0x20 ///< See datasheet #define SSD1306_COLUMNADDR 0x21 ///< See datasheet #define SSD1306_PAGEADDR 0x22 ///< See datasheet #define SSD1306_SETCONTRAST 0x81 ///< See datasheet #define SSD1306_CHARGEPUMP 0x8D ///< See datasheet #define SSD1306_SEGREMAP 0xA0 ///< See datasheet #define SSD1306_DISPLAYALLON_RESUME 0xA4 ///< See datasheet #define SSD1306_DISPLAYALLON 0xA5 ///< Not currently used #define SSD1306_NORMALDISPLAY 0xA6 ///< See datasheet #define SSD1306_INVERTDISPLAY 0xA7 ///< See datasheet #define SSD1306_SETMULTIPLEX 0xA8 ///< See datasheet #define SSD1306_DISPLAYOFF 0xAE ///< See datasheet #define SSD1306_DISPLAYON 0xAF ///< See datasheet #define SSD1306_COMSCANINC 0xC0 ///< Not currently used #define SSD1306_COMSCANDEC 0xC8 ///< See datasheet #define SSD1306_SETDISPLAYOFFSET 0xD3 ///< See datasheet #define SSD1306_SETDISPLAYCLOCKDIV 0xD5 ///< See datasheet #define SSD1306_SETPRECHARGE 0xD9 ///< See datasheet #define SSD1306_SETCOMPINS 0xDA ///< See datasheet #define SSD1306_SETVCOMDETECT 0xDB ///< See datasheet #define SSD1306_SETLOWCOLUMN 0x00 ///< Not currently used #define SSD1306_SETHIGHCOLUMN 0x10 ///< Not currently used #define SSD1306_SETSTARTLINE 0x40 ///< See datasheet #define SSD1306_EXTERNALVCC 0x01 ///< External display voltage source #define SSD1306_SWITCHCAPVCC 0x02 ///< Gen. display voltage from 3.3V #define SSD1306_RIGHT_HORIZONTAL_SCROLL 0x26 ///< Init rt scroll #define SSD1306_LEFT_HORIZONTAL_SCROLL 0x27 ///< Init left scroll #define SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29 ///< Init diag scroll #define SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL 0x2A ///< Init diag scroll #define SSD1306_DEACTIVATE_SCROLL 0x2E ///< Stop scroll #define SSD1306_ACTIVATE_SCROLL 0x2F ///< Start scroll #define SSD1306_SET_VERTICAL_SCROLL_AREA 0xA3 ///< Set scroll range #define SSD1306_SENDALL 0 #define SSD1306_SENDPAGE 1 void SSD1306_Init(I2C_HandleTypeDef *i2c); void SSD1306_display_all(void); uint8_t SSD1306_display_page(void); void SSD1306_clear(uint8_t color); void SSD1306_set_pixel(uint8_t x, uint8_t y, uint8_t bw); void SSD1306_write_to_buffer(const uint8_t* data, uint8_t width, uint8_t height, int8_t pos_x, int8_t pos_y, uint8_t color); void SSD1306_clear_buffer(uint8_t width, uint8_t height, int8_t pos_x, int8_t pos_y, uint8_t color); #ifdef TEST extern uint8_t buffer_oled[SSD1306_BUF_SIZE]; #endif #endif /* INC_SSD1306_OLED_H_ */