ssd1306.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #ifndef __SSD1306_H__
  2. #define __SSD1306_H__
  3. #include <driver/spi_master.h>
  4. #include "fonts.h"
  5. #define READ_BIT I2C_MASTER_READ /*!< I2C master read */
  6. #define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */
  7. #define ACK_VAL 0x0 /*!< I2C ack value */
  8. #define NACK_VAL 0x1 /*!< I2C nack value */
  9. // Fundamental Command (page 28)
  10. #define DISPLAY_LINE_START 0x40
  11. #define CONTRAST_CONTROL 0x81
  12. #define DISABLE_ENTIRE_DISPLAY 0xA4
  13. #define DISPLAY_ON_REG02 0xA5
  14. #define NORMAL_DISPLAY 0xA6
  15. #define DISPLAY_INVERSE 0xA7
  16. #define DISPLAY_RESET 0xAE
  17. #define DISPLAY_ON 0xAF
  18. // Addressing Setting (page 30)
  19. #define MEM_ADDR_MODE 0x20
  20. #define LOWER_COL_START_ADDR 0x00
  21. #define HIGHER_COL_START_ADDR 0x10
  22. #define PAGE_START_ADDR 0xB0
  23. // Hardware Config (page 31)
  24. #define DISPLAY_START_LINE 0x40
  25. #define SEGMENT_REMAP 0xA0
  26. #define SEGMENT_REMAP_FLIP 0xA1
  27. #define MULTIPLEX_RATIO 0xA8
  28. #define COM_OUTPUT_SCAN_DIR 0xC0
  29. #define DISPLAY_OFFSET 0xD3
  30. #define COM_PINS_HARDWARE_CONFIG 0xDA
  31. // Timing & Driving Scheme (page 32)
  32. #define DISPLAY_CLK_RATIO 0xD5
  33. #define PRE_CHARGE_PER 0xD9
  34. #define VCOMH_DESELECT_LEVEL 0xDB
  35. #define NOOPERATION 0xE3
  36. // Charge Pump (page 60)
  37. #define CHARGE_PUMP_SET 0x8D
  38. // Scrolling
  39. #define DEACTIVATE_SCROLL 0x2E
  40. #define ACTIVATE_SCROLL 0x2F
  41. #define VERTICAL_AND_RIGHT_HOR_SCROLL 0x29
  42. #define DUMMY_BYTE 0x00
  43. #define SIX_FRAMES_PER_SEC 0x00
  44. #define VERTICAL_OFFSET_ONE 0x01
  45. typedef enum {
  46. SSD1306_COLOR_BLACK = 0x00, /*!< Black color, no pixel */
  47. SSD1306_COLOR_WHITE = 0x01 /*!< Pixel is set. Color depends on LCD */
  48. } SSD1306_COLOR_t;
  49. #define SSD1306_WIDTH 128
  50. #define SSD1306_HEIGHT 64
  51. esp_err_t oled_ssd1306_init();
  52. void SSD1306_Clear();
  53. void SSD1306_DrawVertLine(const uint8_t y, const uint8_t x1, const uint8_t x2);
  54. char SSD1306_Putc(char ch, const FontDef_t* Font, SSD1306_COLOR_t color);
  55. char SSD1306_Puts(char* str, FontDef_t* Font, SSD1306_COLOR_t color);
  56. void SSD1306_SetPosition(const int x, const int y);
  57. void SSD1306_UpdateScreen(void);
  58. /**
  59. * @brief Calculates string length and height in units of pixels depending on string and font used
  60. * @param *str: String to be checked for length and height
  61. * @param *SizeStruct: Pointer to empty @ref FONTS_SIZE_t structure where informations will be saved
  62. * @param *Font: Pointer to @ref FontDef_t font used for calculations
  63. * @retval Pointer to string used for length and height
  64. */
  65. char* FONTS_GetStringSize(char* str, FONTS_SIZE_t* SizeStruct, FontDef_t* Font);
  66. #endif