summaryrefslogtreecommitdiff
path: root/src/ssd1306.c
diff options
context:
space:
mode:
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;
+}