Display
KLST_PANDA features a 4.3” TFT display with a 480×272px resolution ( see Technical Specifications ) and a capacitive touch surface:
- ④ :: 4.3” TFT display and capacitive touch surface
Display
void display_update_event()
void display_touch_event(TouchEvent* touchevent)
bool display_init(bool double_buffered, TouchPanelMode touch_panel_mode)
void display_deinit()
int16_t display_get_width()
int16_t display_get_height()
void display_set_backlight(float brightness)
void display_enable_automatic_update(bool sync_to_v_blank)
void display_swap_buffer()
void display_switch_on()
void display_switch_off()
bool display_is_double_buffered()
void display_set_update_callback(Callback_0_VOID callback)
void display_set_touch_callback(Callback_1_TOUCHEVENTPTR callback)
uint32_t display_get_buffer_address()
uint32_t* display_get_buffer()
void touch_init(TouchPanelMode touch_panel_mode)
void touch_read(TouchEvent* touchevent)
bool touch_has_event()
Draw
uint32_t color(const uint8_t r, const uint8_t g, const uint8_t b, const uint8_t a)
uint32_t color(const uint8_t r, const uint8_t g, const uint8_t b)
uint32_t color(const uint8_t gray, const uint8_t a)
uint32_t color(const uint8_t gray)
void draw_clear(uint32_t color)
void draw_fill(uint32_t color)
void draw_no_fill()
void draw_stroke(uint32_t color)
void draw_no_stroke()
void draw_set_background_color(uint32_t color)
void draw_set_pixel(int16_t x, int16_t y, uint32_t color)
void draw_set_pixel_alpha(int16_t x, int16_t y, uint32_t color)
uint32_t draw_get_pixel(int16_t x, int16_t y)
void draw_line(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint32_t color)
void draw_line_arbitrary(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint32_t color)
void draw_line_horizontal(int16_t x, int16_t y, uint16_t length, uint32_t color)
void draw_line_horizontal_pattern(int16_t x, int16_t y, uint16_t length, uint8_t pattern)
void draw_line_vertical(int16_t x, int16_t y, uint16_t length, uint32_t color)
void draw_line_vertical_pattern(int16_t x, int16_t y, uint16_t length, uint8_t pattern)
void draw_rect(int16_t x, int16_t y, uint16_t width, uint16_t height, uint32_t color, bool filled)
void draw_rect_stroke(int16_t x, int16_t y, uint16_t width, uint16_t height, uint32_t color)
void draw_rect_fill(int16_t x, int16_t y, uint16_t width, uint16_t height, uint32_t color)
void draw_circle(int16_t x, int16_t y, uint16_t radius)
void draw_circle_stroke(int16_t x, int16_t y, uint16_t radius, uint32_t color) // TODO
void draw_circle_fill(int16_t x, int16_t y, uint16_t radius, uint32_t color)
void draw_triangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint32_t color)
void draw_triangle_stroke(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint32_t color)
void draw_triangle_fill(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint32_t color)
void draw_polygon(const std::vector<Point>& points, bool closed)
void draw_polygon_stroke(const std::vector<Point>& points, bool closed, uint32_t color)
void draw_polygon_fill(const std::vector<Point>& points, uint32_t color) // TODO WIP
void draw_ellipse(int16_t x, int16_t y, uint16_t radius_x, uint16_t radius_y)
void draw_ellipse_stroke(int16_t x, int16_t y, uint16_t radius_x, uint16_t radius_y, uint32_t color)
void draw_ellipse_fill(int16_t x, int16_t y, uint16_t radius_x, uint16_t radius_y, uint32_t color)
void draw_image(uint32_t* data, int16_t x, int16_t y, uint16_t width, uint16_t height)
void draw_set_text(KLSTFont* font)
KLSTFont* draw_get_text()
void draw_char(int16_t x, int16_t y, char ascii_char)
void draw_char(int16_t x, int16_t y, char ascii_char, uint8_t scale)
void draw_text(int16_t x, int16_t y, const std::string& text)
void draw_text(int16_t x, int16_t y, const std::string& text, uint8_t scale)
uint32_t draw_blend_colors(uint32_t color_a, uint32_t color_b, uint8_t alpha)
Example Display
/**
* this example demonstrates how to use the display with touch panel
*/
#include <vector>
#include "Arduino.h"
#include "System.h"
#include "Console.h"
#include "Display.h"
#include "Draw.h"
void setup() {
system_init();
display_init(false);
}
void loop() {
console_println("...");
delay(1000);
}
void display_touch_event(TouchEvent* touchevent) {
for (int i = 0; i < touchevent->number_of_touches; ++i) {
draw_rect_fill(touchevent->x[i], touchevent->y[i], 8, 8, GRAY(0xFF));
}
if (touchevent->number_of_touches == 4) {
draw_clear(GRAY(0x00));
}
if (touchevent->number_of_touches == 5) {
draw_clear(RGB(0xFF, 0x80, 0x00));
}
console_clear();
console_println("TOUCH EVENT: %d", touchevent->number_of_touches);
for (int i = 0; i < touchevent->number_of_touches; ++i) {
console_println(" %d : %d,%d", i, touchevent->x[i], touchevent->y[i]);
}
}