Files

110 lines
2.5 KiB
C

/**
* ESP-IDF ST7735 Display Driver (basierend auf LilyGO T-Dongle-C5 Demo)
*
* GPIO-Pins für T-Dongle-C5:
* CS = GPIO10, DC = GPIO3, RST = GPIO1
* BL = GPIO0, MOSI = GPIO2, SCK = GPIO6
*
* Display: ST7735S, 80x160, Rotation 3 (invertiert), Offset x=26, y=1
*/
#ifndef ST7735_H
#define ST7735_H
#include "esp_err.h"
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/* GPIO-Konfiguration für T-Dongle-C5 */
typedef struct {
int cs_gpio;
int dc_gpio;
int rst_gpio;
int bl_gpio; /* Backlight, aktiv LOW */
int mosi_gpio;
int sck_gpio;
} st7735_gpio_config_t;
/* Standard GPIO-Konfiguration für T-Dongle-C5 */
#define ST7735_GPIO_CONFIG_DEFAULT() \
{ \
.cs_gpio = 10, \
.dc_gpio = 3, \
.rst_gpio = 1, \
.bl_gpio = 0, \
.mosi_gpio = 2, \
.sck_gpio = 6, \
}
/* Display Parameter */
#define ST7735_TFT_WIDTH 80
#define ST7735_TFT_HEIGHT 160
#define ST7735_COL_OFFSET 26
#define ST7735_ROW_OFFSET 1
/* Farben */
#define ST7735_BLACK 0x0000
#define ST7735_WHITE 0xFFFF
#define ST7735_BLUE 0x001F
#define ST7735_RED 0xF800
#define ST7735_GREEN 0x07E0
/* Rotationswinkel */
#define ST7735_ROTATION_0 0 /* 0° */
#define ST7735_ROTATION_90 1 /* 90° */
#define ST7735_ROTATION_180 2 /* 180° */
#define ST7735_ROTATION_270 3 /* 270° */
/**
* ST7735 Display initialisieren
*
* @param gpio_config GPIO-Konfiguration (NULL = Default T-Dongle-C5 Pins)
* @param rotation Display-Rotation (0, 1, 2, 3)
* @param handle[out] Panel-Handle für weitere Befehle
* @return ESP_OK bei Erfolg, Fehlercode sonst
*/
esp_err_t st7735_init(const st7735_gpio_config_t *gpio_config,
uint8_t rotation,
void **handle);
/**
* Display ausschalten
*/
esp_err_t st7735_display_off(void *handle);
/**
* Display einschalten
*/
esp_err_t st7735_display_on(void *handle);
/**
* Full-Screen füllen (eine Farbe)
*/
esp_err_t st7735_fill_screen(void *handle, uint16_t color);
/**
* Pixel zeichnen
*/
esp_err_t st7735_draw_pixel(void *handle, int16_t x, int16_t y, uint16_t color);
/**
* Rechteck zeichnen (x,y = Start, w/h = Größe, color = Füllfarbe)
*/
esp_err_t st7735_draw_rect(void *handle, int16_t x, int16_t y,
uint16_t w, uint16_t h, uint16_t color);
/**
* Linie zeichnen
*/
esp_err_t st7735_draw_line(void *handle, int16_t x0, int16_t y0,
int16_t x1, int16_t y1, uint16_t color);
#ifdef __cplusplus
}
#endif
#endif /* ST7735_H */