#ifndef LCD_H #define LCD_H #include #include "hardware/i2c.h" #include "pico/stdlib.h" class LCD { public: LCD(i2c_inst_t *i2c, const uint gpio_sda, const uint gpio_scl, const uint8_t i2c_addr = 0x27, uint8_t num_cols = 16, uint8_t num_lines = 2); void sendString(const std::string &str); void setCursor(int line, int position); void clear(); private: enum class Mode { COMMAND, CHARACTER }; void sendByte(uint8_t val, Mode mode); void toggleEnable(uint8_t val); void i2cWriteByte(uint8_t val); void sendChar(char val); i2c_inst_t *i2c; uint8_t i2c_addr; uint8_t num_cols; uint8_t num_lines; uint8_t cursor_x{0}; uint8_t cursor_y{0}; }; #endif