diff --git a/src/omnicrystal.cpp b/src/omnicrystal.cpp index 22c42a5..efde73f 100644 --- a/src/omnicrystal.cpp +++ b/src/omnicrystal.cpp @@ -175,10 +175,19 @@ Omnicrystal& Omnicrystal::display_off(){ /*------------------- FIM CONFIGURAÇÃO DO DISPLAY ---------------------*/ Omnicrystal& Omnicrystal::set_cursor(uint8_t line, uint8_t col){ - if(line <= _line){ - if(col <= _col){ + if(line < _line){ + if(col < _col){ send(addrs[line]+col, 0); } } return *this; } + +Omnicrystal& Omnicrystal::create_char(uint8_t c[8], uint8_t pos){ + pos &= 0b00000111; + send(0x40 | (pos<<3), 0); + for(size_t i = 0; i < 8; i++){ + send(c[i], 1); + } + return *this; +} diff --git a/src/omnicrystal.h b/src/omnicrystal.h index 620b26c..299039b 100644 --- a/src/omnicrystal.h +++ b/src/omnicrystal.h @@ -49,7 +49,7 @@ enum LCDCharSize { class Omnicrystal : public Print{ private: - static constexpr uint8_t addrs[4] = {0x80, 0xC0, 0x80+20, 0xC0+20}; //endereços para LCD 16x2 e 20x4 + const uint8_t addrs[4] = {0x80, 0xC0, 0x80+20, 0xC0+20}; //endereços para LCD 16x2 e 20x4 LCDInterface &_bridge; const BusType _bus; // tipo de comunicação 4 ou 8 bits const uint8_t _line; // quantidade de linhas no display @@ -97,6 +97,8 @@ class Omnicrystal : public Print{ Omnicrystal& display_off(); Omnicrystal& set_cursor(uint8_t line, uint8_t col); + Omnicrystal& create_char(uint8_t c[8], uint8_t pos); + Omnicrystal& begin(); virtual size_t write(uint8_t); };