#pragma once #include #include "pico_graphics.hpp" namespace pimoroni { class PicoScroll { private: static const uint8_t DEFAULT_ADDRESS = 0x74; static const uint BUFFER_SIZE = 144; public: static const int WIDTH = 17; static const int HEIGHT = 7; static const uint8_t A = 12; static const uint8_t B = 13; static const uint8_t X = 14; static const uint8_t Y = 15; private: uint8_t __fb[BUFFER_SIZE]; public: ~PicoScroll(); void init(); void update(); void set_pixels(const char *pixels); void set_bitmap_1d(const char *bitmap, size_t bitmap_len, int brightness, int offset); void scroll_text(const char *text, size_t text_len, int brightness, int delay_ms); void scroll_text(std::string text, int brightness, int delay_ms=100) { scroll_text(text.c_str(), text.length(), brightness, delay_ms); }; void set_text(const char *text, size_t text_len, int brightness, int offset); void set_text(std::string text, int brightness, int offset=0) { set_text(text.c_str(), text.length(), brightness, offset); } void set_pixel(uint8_t x, uint8_t y, uint8_t v); void clear(); bool is_pressed(uint8_t button); void update(PicoGraphics *graphics); private: void i2c_write(uint8_t reg, const char *data, uint8_t len); }; }