summaryrefslogtreecommitdiff
path: root/src/ssd1306.c
diff options
context:
space:
mode:
authorMaxwell Beck <max@rastertail.net>2026-10-26 22:20:53 -0500
committerMaxwell Beck <max@rastertail.net>2026-10-26 22:20:53 -0500
commit82dda2a60dc214174813b759ee4f618d1d6e3852 (patch)
tree78088a519cec9d4b4f45b6b0c4df3ee87365e35d /src/ssd1306.c
parent6772cb35f7b404b793a8bf13f3e1a4c1defbe430 (diff)
char drawing
need to fix row ordering
Diffstat (limited to 'src/ssd1306.c')
-rw-r--r--src/ssd1306.c28
1 files changed, 27 insertions, 1 deletions
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 <hardware/gpio.h>
#include <pico/error.h>
@@ -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;
+}