From 1993d403e5e18b94384ecf5ee9428ec2da135223 Mon Sep 17 00:00:00 2001 From: David Tillotson Date: Sat, 6 Mar 2021 21:27:40 +0000 Subject: [PATCH] Added portrait mode (building with the work from hamid-elaosta:portrait) --- drivers/st7789/st7789.cpp | 9 +++++++++ libraries/pico_display/pico_display.cpp | 5 +++++ libraries/pico_display/pico_display.hpp | 5 ++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/st7789/st7789.cpp b/drivers/st7789/st7789.cpp index 77528dec..0c1c567a 100644 --- a/drivers/st7789/st7789.cpp +++ b/drivers/st7789/st7789.cpp @@ -58,6 +58,10 @@ namespace pimoroni { madctl[0] = 0x70; } + if(width == 135 && height == 240) { + madctl[0] = 0x00; + } + command(reg::MADCTL, 1, madctl); // row/column addressing order - rgb pixel order command(reg::TEON, 1, "\x00"); // enable frame sync signal if used command(reg::COLMOD, 1, "\x05"); // 16 bits per pixel @@ -78,6 +82,11 @@ namespace pimoroni { command(reg::RASET, 4, "\x00\x35\x00\xbb"); // 53 .. 187 (135 rows) command(reg::CASET, 4, "\x00\x28\x01\x17"); // 40 .. 279 (240 columns) } + + if(width == 135 && height == 240) { + command(reg::CASET, 4, "\x00\x34\x00\xba"); // 52 .. 186 (135 rows) + command(reg::RASET, 4, "\x00\x28\x01\x17"); // 40 .. 279 (240 columns) + } } // the dma transfer works but without vsync it's not that useful as you could diff --git a/libraries/pico_display/pico_display.cpp b/libraries/pico_display/pico_display.cpp index f4b38031..0e2606e5 100644 --- a/libraries/pico_display/pico_display.cpp +++ b/libraries/pico_display/pico_display.cpp @@ -17,6 +17,11 @@ namespace pimoroni { __fb = buf; } + PicoDisplay::PicoDisplay(uint16_t *buf, int width, int height) + : PicoGraphics(width, height, buf), screen(width, height, buf) { + __fb = buf; + } + void PicoDisplay::init() { // setup the rgb led for pwm control pwm_config cfg = pwm_get_default_config(); diff --git a/libraries/pico_display/pico_display.hpp b/libraries/pico_display/pico_display.hpp index abc4e41c..a0553abf 100644 --- a/libraries/pico_display/pico_display.hpp +++ b/libraries/pico_display/pico_display.hpp @@ -9,7 +9,9 @@ namespace pimoroni { public: static const int WIDTH = 240; static const int HEIGHT = 135; - static const uint8_t A = 12; + static const int PORTRAIT_WIDTH = 135; + static const int PORTRAIT_HEIGHT = 240; + static const uint8_t A = 12; static const uint8_t B = 13; static const uint8_t X = 14; static const uint8_t Y = 15; @@ -20,6 +22,7 @@ namespace pimoroni { public: PicoDisplay(uint16_t *buf); + PicoDisplay(uint16_t *buf, int width, int height); void init(); void update();