mirror of
https://github.com/ClusterM/fdskey.git
synced 2025-12-16 19:15:54 +01:00
85 lines
3.0 KiB
C
85 lines
3.0 KiB
C
#ifndef INC_OLED_H_
|
|
#define INC_OLED_H_
|
|
|
|
#include "main.h"
|
|
#include "fonts.h"
|
|
#include "images.h"
|
|
|
|
#define OLED_I2C hi2c1
|
|
#define OLED_ADDRESS 0x3C
|
|
|
|
#define OLED_WIDTH 128
|
|
#define OLED_HEIGHT 32
|
|
#define OLED_PADDING_LEFT 0
|
|
|
|
#define OLED_TIMEOUT 100
|
|
|
|
typedef enum __attribute__ ((__packed__))
|
|
{
|
|
OLED_CONTROLLER_SSD1306 = 0,
|
|
OLED_CONTROLLER_SH1106
|
|
} OLED_CONTROLLER;
|
|
|
|
#define OLED_COMMAND_LAST 0x00
|
|
#define OLED_COMMAND_NOT_LAST 0x80
|
|
#define OLED_COMMAND_DATA 0x40
|
|
|
|
#define OLED_CMD_SET_COLUMN_LOW(column) ((column) & 0xF)
|
|
#define OLED_CMD_SET_COLUMN_HIGH(column) (0x10 | ((column) >> 8))
|
|
#define OLED_CMD_SET_PUMP_VOLTAGE_6_4 0x30
|
|
#define OLED_CMD_SET_PUMP_VOLTAGE_7_4 0x31
|
|
#define OLED_CMD_SET_PUMP_VOLTAGE_8_0 0x32
|
|
#define OLED_CMD_SET_PUMP_VOLTAGE_9_0 0x33
|
|
#define OLED_CMD_SET_START_LINE(line) (0x40 | ((line) & 0x3F))
|
|
#define OLED_CMD_SET_CONTRAST_MODE 0x81
|
|
#define OLED_CMD_SET_HORIZONTAL_FLIP_OFF 0xA0
|
|
#define OLED_CMD_SET_HORIZONTAL_FLIP_ON 0xA1
|
|
#define OLED_CMD_SET_ENTIRE_OFF 0xA4
|
|
#define OLED_CMD_SET_ENTIRE_ON 0xA5
|
|
#define OLED_CMD_SET_REVERSE_OFF 0xA6
|
|
#define OLED_CMD_SET_REVERSE_ON 0xA7
|
|
#define OLED_CMD_SET_MULTIPLEX_RATION_MODE 0xA8
|
|
#define OLED_CMD_SET_OFF 0xAE
|
|
#define OLED_CMD_SET_ON 0xAF
|
|
#define OLED_CMD_SET_PAGE(page) (0xB0 | ((page) & 7))
|
|
#define OLED_CMD_SET_VERTICAL_FLIP_OFF 0xC0
|
|
#define OLED_CMD_SET_VERTICAL_FLIP_ON 0xC8
|
|
#define OLED_CMD_SET_CLOCK_RATIO_MODE 0xD5
|
|
#define OLED_CMD_SET_PADS_MODE 0xDA
|
|
#define OLED_CMD_SET_PADS_MODE_SEQUENTIAL 0x02
|
|
#define OLED_CMD_SET_PADS_MODE_ALTERNATIVE 0x12
|
|
|
|
void oled_init(OLED_CONTROLLER oled_controller, uint8_t rotate_screen, uint8_t reverse, uint8_t contrast);
|
|
uint8_t* oled_pixel(int x, int y);
|
|
void oled_set_pixel(int x, int y, uint8_t value);
|
|
uint8_t oled_get_pixel(int x, int y);
|
|
HAL_StatusTypeDef oled_send_commands(int len, ...);
|
|
HAL_StatusTypeDef oled_send_command(uint8_t command);
|
|
HAL_StatusTypeDef oled_write_data(uint8_t *data, uint8_t len);
|
|
HAL_StatusTypeDef oled_update(uint8_t start_page, uint8_t end_page);
|
|
HAL_StatusTypeDef oled_update_full();
|
|
HAL_StatusTypeDef oled_update_invisible();
|
|
HAL_StatusTypeDef oled_set_line(int y);
|
|
uint8_t oled_get_line();
|
|
|
|
void oled_draw_rectangle(int x1, int y1, int x2, int y2, uint8_t fill, uint8_t value);
|
|
void oled_draw_line(int x1, int y1, int x2, int y2, uint8_t value);
|
|
void oled_copy_to_invisible();
|
|
void oled_switch_to_invisible();
|
|
void oled_draw_text(const DotMatrixFont *font, char* text, int x, int y, uint8_t replace, uint8_t invert);
|
|
void oled_draw_text_cropped(const DotMatrixFont *font, char* text, int x, int y,
|
|
uint8_t start_x, uint8_t max_width,
|
|
uint8_t start_y, uint8_t max_height,
|
|
uint8_t replace, uint8_t invert);
|
|
int oled_get_text_length(const DotMatrixFont *font, char *text);
|
|
void oled_draw_image(const DotMatrixImage *img, int x, int y, uint8_t replace, uint8_t invert);
|
|
void oled_draw_image_cropped(const DotMatrixImage *img, int x, int y,
|
|
uint8_t start_x, uint8_t max_width,
|
|
uint8_t start_y, uint8_t max_height,
|
|
uint8_t replace, uint8_t invert);
|
|
void oled_rotate(uint8_t rotate_screen);
|
|
|
|
extern I2C_HandleTypeDef OLED_I2C;
|
|
|
|
#endif /* INC_OLED_H_ */
|