From aa03d0e13802825a9526d87a0e79fa0f7eed38be Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Sun, 13 Jun 2021 12:44:24 +0200 Subject: MyLCD : move as lib, add more lines using a vertical split --- libraries/MyLCD/MyLCD.h | 82 +++++++++++++++++++++++++++++++++++++++++++++++++ lpo/MyLCD.h | 51 ------------------------------ 2 files changed, 82 insertions(+), 51 deletions(-) create mode 100644 libraries/MyLCD/MyLCD.h delete mode 100644 lpo/MyLCD.h diff --git a/libraries/MyLCD/MyLCD.h b/libraries/MyLCD/MyLCD.h new file mode 100644 index 0000000..b56af9b --- /dev/null +++ b/libraries/MyLCD/MyLCD.h @@ -0,0 +1,82 @@ +#ifndef __MYLCD_H +#define __MYLCD_H +#include +class MyLCD : public LCD_ILI9325D { + /* 2.8" ILI9325 based LCD 320x240x16bpp*/ + public: + uint8_t column, line; + MyLCD() { + LCD_ILI9325D::setFontSize(FONT_SIZE_SMALL); + this->clear(); + } + void begin() { + LCD_ILI9325D::begin(); + }; + /* Stub to be compatible with Serial interface. Can't find an abstract Class defined properly in Arduino core stuff */ + void begin(long speed) { + this->begin(); + }; + /* Simulate more lines with 2 columns */ + byte getLines() { return 30*2; } + byte getCols() { return 53/2; } + void setCursor(uint8_t column, uint8_t line) { + /* column and line as in a terminal, start at line 1, col 1. each column is one character wide*/ + this->column = (column==0)?1:column; + this->line = (column==0)?1:line; + /* Simulate more lines with 2 columns */ + if ( this->line <= this->getLines()/2 ) { + LCD_ILI9325D::setCursor((column-1)*6, line-1); + } else { + LCD_ILI9325D::setCursor((this->getCols()+column-1)*6, line-1-this->getLines()/2); + } + } + void clear() { + LCD_ILI9325D::clear(); + this->setCursor(1, 1); + } + size_t println() { + if ( this->line < this->getLines() ) { + this->setCursor(1, this->line+1); + } else { + this->clear(); + } + } + void moveRight(size_t len) { + if ( this->column+len <= this->getCols() ) { + this->setCursor(this->column+len, this->line); + } else { + this->println(); + } + } + size_t println(const String &s) { + size_t len = LCD_ILI9325D::print(s); + this->println(); + return len; + } + size_t println(const char *s) { + size_t len = LCD_ILI9325D::print(s); + this->println(); + return len; + } + size_t println(const char c) { + size_t len = LCD_ILI9325D::print(c); + this->println(); + return len; + } + size_t print(const String &s) { + size_t len = LCD_ILI9325D::print(s); + this->moveRight(len); + return len; + } + size_t print(const char *s) { + size_t len = LCD_ILI9325D::print(s); + this->moveRight(len); + return len; + } + size_t print(const char c) { + size_t len = LCD_ILI9325D::print(c); + this->moveRight(len); + return len; + } +}; +#endif diff --git a/lpo/MyLCD.h b/lpo/MyLCD.h deleted file mode 100644 index 565e110..0000000 --- a/lpo/MyLCD.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef __MYLCD_H -#define __MYLCD_H -#undef PROGMEM -#define PROGMEM -#include -class MyLCD : public LCD_ILI9325D { - /* 2.8" ILI9325 based LCD 320x240x16bpp*/ - public: - uint8_t column, line; - MyLCD() { - LCD_ILI9325D::setFontSize(FONT_SIZE_SMALL); - this->clear(); - } - byte getLines() { return 30; } - byte getCols() { return 53; } - void setCursor(uint8_t column, uint8_t line) { - /* column and line as in a terminal, start at line 1, col 1. each column is one character wide*/ - this->column = (column==0)?1:column; - this->line = (column==0)?1:line; - LCD_ILI9325D::setCursor((column-1)*6, line-1); - } - void clear() { - LCD_ILI9325D::clear(); - this->setCursor(1, 1); - } - size_t println() { - if ( this->line < this->getLines() ) { - this->setCursor(1, this->line+1); - } else { - this->clear(); - } - } - void moveRight(size_t len) { - if ( this->column+len <= this->getCols() ) { - this->setCursor(this->column+len, this->line); - } else { - this->println(); - } - } - size_t println(const String &s) { - size_t len = LCD_ILI9325D::print(s); - this->println(); - return len; - } - size_t print(const String &s) { - size_t len = LCD_ILI9325D::print(s); - this->moveRight(len); - return len; - } -}; -#endif -- cgit v1.2.3