#ifndef __SSD1306_H__ #define __SSD1306_H__ #include void i2c_master_init(); esp_err_t oled_ssd1306_init(); // I2C CONFIG #define I2C_MASTER_NUM I2C_NUM_1 /*!< I2C port number for master dev */ #define I2C_MASTER_TX_BUF_DISABLE 0 /*!< I2C master do not need buffer */ #define I2C_MASTER_RX_BUF_DISABLE 0 /*!< I2C master do not need buffer */ #define SSD1306_OLED_ADDR 0x3C /*!< slave address for ssd1306 oled display */ #define WRITE_BIT I2C_MASTER_WRITE /*!< I2C master write */ #define READ_BIT I2C_MASTER_READ /*!< I2C master read */ #define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/ #define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ #define ACK_VAL 0x0 /*!< I2C ack value */ #define NACK_VAL 0x1 /*!< I2C nack value */ // Control bytes (page 20) #define COMMAND_MODE 0x00 #define SINGLE_COMMAND_MODE 0x80 #define DATA_MODE 0x40 // Fundamental Command (page 28) #define DISPLAY_LINE_START 0x40 #define CONTRAST_CONTROL 0x81 #define DISABLE_ENTIRE_DISPLAY 0xA4 #define DISPLAY_ON_REG02 0xA5 #define NORMAL_DISPLAY 0xA6 #define DISPLAY_INVERSE 0xA7 #define DISPLAY_RESET 0xAE #define DISPLAY_ON 0xAF // Hardware Config (page 31) #define DISPLAY_START_LINE 0x40 #define SEGMENT_REMAP 0xA0 #define MULTIPLEX_RATIO 0xA8 #define COM_OUTPUT_SCAN_DIR 0xC0 #define DISPLAY_OFFSET 0xD3 #define COM_PINS_HARDWARE_CONFIG 0xDA // Timing & Driving Scheme (page 32) #define DISPLAY_CLK_RATIO 0xD5 #define PRE_CHARGE_PER 0xD9 #define VCOMH_DESELECT_LEVEL 0xDB #define NOOPERATION 0xE3 // Charge Pump (page 60) #define CHARGE_PUMP_SET 0x8D #endif