From 82dda2a60dc214174813b759ee4f618d1d6e3852 Mon Sep 17 00:00:00 2001 From: Maxwell Beck Date: Mon, 26 Oct 2026 22:20:53 -0500 Subject: char drawing need to fix row ordering --- src/ssd1306.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'src/ssd1306.c') diff --git a/src/ssd1306.c b/src/ssd1306.c index ba17c04..de31d0f 100644 --- a/src/ssd1306.c +++ b/src/ssd1306.c @@ -1,5 +1,7 @@ #include "ssd1306.h" +#include "chars.h" + #include #include @@ -54,7 +56,7 @@ int ssd_power_on(ssd1306_t *display) { ssd_push(display, SSD1306_MEM_MODE_HORIZONTAL); ssd_push(display, SSD1306_SEG_REMAP_COL0); - ssd_push(display, SSD1306_COM_SCAN_NORMAL); + ssd_push(display, SSD1306_COM_SCAN_REMAP); ssd_push(display, SSD1306_SET_COM_PINS); ssd_push(display, SSD1306_COM_PINS_SEQUENTIAL); @@ -74,3 +76,27 @@ int ssd_power_on(ssd1306_t *display) { return ssd_send(display); } + +int ssd_push_char(ssd1306_t *display, const char c) { + uint8_t scr = ascii_to_screen[c]; + + for (int i = 0; i < 8; i++) { + int ret = ssd_push(display, c64_chars[scr + 256][i]); + if (ret < 0) { + return ret; + } + } + + return PICO_OK; +} + +int ssd_push_str(ssd1306_t *display, const char *str) { + for (int i = 0; str[i]; i++) { + int ret = ssd_push_char(display, str[i]); + if (ret < 0) { + return ret; + } + } + + return PICO_OK; +} -- cgit v1.3.1